tencent cloud

容器服务

动态与公告
产品动态
公告
产品发布记录
产品简介
产品概述
产品优势
产品架构
应用场景
产品功能
基本概念
原生 Kubernetes 名词对照
容器服务高危操作
地域和可用区
开源组件
购买指南
购买指引
购买 TKE 标准集群
购买原生节点
购买超级节点
快速入门
新手指引
快速创建一个标准集群
入门示例
容器应用部署 Check List
集群配置
标准集群概述
集群管理
网络管理
存储管理
节点管理
GPU 资源管理
远程终端
应用配置
工作负载管理
服务和配置管理
组件和应用管理
弹性伸缩
容器登录方式
可观测配置
运维可观测性
成本洞察和优化
调度配置
调度组件概述
资源利用率优化调度
业务优先级保障调度
Qos 感知调度
安全和稳定性
容器服务安全组设置
身份验证和授权
应用安全
多集群管理
计划升级
备份中心
云原生服务指南
云原生 etcd
Prometheus 监控服务
TKE Serverless 集群指南
TKE 注册集群指南
实践教程
集群
Serverless 集群
调度
安全
服务部署
网络
发布
日志
监控
运维
Terraform
DevOps
弹性伸缩
容器化
微服务
成本管理
混合云
AI
故障处理
节点磁盘爆满排障处理
节点高负载排障处理
节点内存碎片化排障处理
集群 DNS 解析异常排障处理
集群 Kube-Proxy 异常排障处理
集群 API Server 网络无法访问排障处理
Service&Ingress 网络无法访问排障处理
Service&Ingress 常见报错和处理
Nginx Ingress 偶现 Connection Refused
CLB Ingress 创建报错排障处理
Pod 网络无法访问排查处理
Pod 状态异常与处理措施
授权腾讯云售后运维排障
CLB 回环问题
API 文档
History
Introduction
API Category
Making API Requests
Elastic Cluster APIs
Resource Reserved Coupon APIs
Cluster APIs
Third-party Node APIs
Relevant APIs for Addon
Network APIs
Node APIs
Node Pool APIs
TKE Edge Cluster APIs
Cloud Native Monitoring APIs
Scaling group APIs
Super Node APIs
Other APIs
Data Types
Error Codes
TKE API 2022-05-01
常见问题
TKE 标准集群
TKE Serverless 集群
运维类
隐患处理
服务类
镜像仓库类
远程终端类
事件类
资源管理类
服务协议
TKE Service Level Agreement
TKE Serverless Service Level Agreement
联系我们
词汇表

快速开始

PDF
聚焦模式
字号
最后更新时间: 2024-08-12 17:49:23

概述

Nginx Ingress Controller 是基于高性能 NGINX 反向代理实现的 Kubernetes Ingress 控制器,也是最常用的开源 Ingress 实现。本文介绍如何在 TKE 环境中自建 Nginx Ingress Controller,主要使用 helm 进行安装,提供一些 values.yaml 配置指引。

前提条件

创建了 TKE 集群。
安装了 helm
配置了 TKE 集群的 kubeconfig,且有权限操作 TKE 集群。详情请参见 连接集群

使用 helm 安装

添加 helm repo:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
查看默认配置:
helm show values ingress-nginx/ingress-nginx
Nginx Ingress 依赖的镜像在 registry.k8s.io 这个 registry 下,国内网络环境无法拉取,可替换为 docker hub 中的 mirror 镜像。
准备 values.yaml
controller: # 以下配置将依赖镜像替换为了 docker hub 上的 mirror 镜像以保证在国内环境能正常拉取
image:
registry: docker.io
image: k8smirror/ingress-nginx-controller
admissionWebhooks:
patch:
image:
registry: docker.io
image: k8smirror/ingress-nginx-kube-webhook-certgen
defaultBackend:
image:
registry: docker.io
image: k8smirror/defaultbackend-amd64
opentelemetry:
image:
registry: docker.io
image: k8smirror/ingress-nginx-opentelemetry
说明:
配置中的 mirror 镜像均使用 image-porter 长期自动同步,可放心安装和升级。
安装:
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \\
--namespace ingress-nginx --create-namespace \\
-f values.yaml
说明:
后续如果需要修改 values 配置,或者升级版本,都可以通过执行这个命令来更新 Nginx Ingress Controller。
查看流量入口(CLB VIP 或域名):
$ kubectl get services -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer xxx.xx.xxx.xxx xxx.xx.xx.xxx 80:30683/TCP,443:32111/TCP 53s
ingress-nginx-controller-admission ClusterIP xxx.xx.xxx.xxx <none> 443/TCP 53s
说明:
LoadBalancer 类型 Service 的 EXTERNAL-IP 就是 CLB 的 VIP 或域名,可以配置 DNS 解析。如果是 VIP,则配 A 记录;如果是 CLB 域名,则配置 CNAME 记录。

版本与升级

Nginx Ingress 的版本需要与 Kubernetes 集群版本能够兼容,可参考官方 Supported Versions table 确认当前集群版本能否支持最新的 nginx ingress,如果不支持,安装的时候需指定 chart 版本。
例如当前的 TKE 集群版本是 1.24,chart 版本最高只能到 4.7.*,通过以下命令检查有哪些可用版本:
$ helm search repo ingress-nginx/ingress-nginx --versions | grep 4.7.
ingress-nginx/ingress-nginx 4.7.5 1.8.5 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 4.7.3 1.8.4 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 4.7.2 1.8.2 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 4.7.1 1.8.1 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 4.7.0 1.8.0 Ingress controller for Kubernetes using NGINX a...
可以看到 4.7.* 版本最高是 4.7.5,安装的时候需加上版本号:
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \\
--version 4.7.5 \\
--namespace ingress-nginx --create-namespace \\
-f values.yaml
注意:
TKE 集群升级前,先检查当前 Nginx Ingress 版本能否兼容升级后的集群版本,如果不能兼容,先升级 Nginx Ingress(用上面的命令指定 chart 版本号)。

使用 Ingress

Nginx Ingress 实现了 Kubernetes 的 Ingress API 定义的标准能力,Ingress 的基础用法请参见 Kubernetes 官方文档
必须指定 ingressClassName 为 Nginx Ingress 实例所使用的 IngressClass(默认为 nginx):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
除此之外,Nginx Ingress 还有很多其它特有的功能,通过 Ingress 注解来扩展 Ingress 的功能,请参见 Nginx Ingress Annotations

更多自定义

如果需要对 Nginx Ingress 进行更多的自定义,可参考以下文档,根据自己需求合并下 values.yaml 配置,values.yaml 完整配置示例 提供了合并后的 values.yaml 完整配置示例。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈