Ingress 基本功能

最近更新时间:2026-05-20 17:17:38

我的收藏

简介

Ingress 是允许访问到集群内 Service 的规则的集合,您可以通过配置转发规则,实现不同 URL 访问集群内不同的 Service。 为了使 Ingress 资源正常工作,集群必须运行 Ingress-controller。TKE 服务在集群内默认启用了基于腾讯云负载均衡器实现的 l7-lb-controller,支持 HTTP、HTTPS,同时也支持在集群内自建其他 Ingress 控制器,您可以根据您的业务需要选择不同的 Ingress 类型。

注意事项

腾讯云负载均衡(Cloud Load Balancer)实例已于2023年03月06日升级了架构,升级后公网负载均衡以域名的方式提供服务。VIP 随业务请求动态变化,控制台不再展示 VIP 地址。请参见 域名化公网负载均衡上线公告
新注册的腾讯云用户默认使用升级后的域名化负载均衡。
存量用户可以选择继续使用原有的负载均衡,不受升级影响。如果您需要升级负载均衡服务,则需要同时升级腾讯云产品 CLB 以及 TKE,否则 TKE 中的所有公网类型的 Service/Ingress 同步将可能受到影响。CLB 升级操作详情请参见 域名化负载均衡升级指南;TKE 升级 Service/Ingress 组件版本,请通过 在线咨询 联系我们。
Ingress apiVersion 支持情况:
extensions/v1beta1 和 networking.k8s.io/v1beta1 API 版本的 Ingress 不在 v1.22 版本中继续提供。即仅在 TKE Kubernetes 版本 ≤ 1.20 版本中使用。
networking.k8s.io/v1 API 从 v1.19(TKE 场景只支持偶数版本,因此是从 TKE 的 v1.20) 版本开始可用。即仅在 TKE Kubernetes 版本 ≥ 1.20 版本中使用。
更多信息请参见 Kubernetes 文档
确保您的容器业务不和 CVM 业务共用一个 CLB。
不支持您在 CLB 控制台操作 TKE 管理的 CLB 的监听器、转发路径、证书和后端绑定的服务器,您的更改会被 TKE 自动覆盖。
使用已有的 CLB 时:
只能使用通过 CLB 控制台创建的负载均衡器,不支持复用由 TKE 自动创建的 CLB。
支持多个 Ingress 复用 CLB。
支持 Ingress 和 Service 共用 CLB。
删除 Ingress 后,复用 CLB 绑定的后端云服务器需要自行解绑,同时会保留一个 tag tke-clusterId: cls-xxxx,需自行清理。
默认 CLB 的转发规则的限制是50个,如果您 Ingress 的转发规则超过50时,可通过 在线咨询 提升负载均衡 CLB 的配额。
Ingress 和 CLB 之间配置的管理和同步是由以 CLB ID 为名字的 LoadBalancerResource 类型的资源对象,请勿对该 CRD 进行任何操作,否则容易导致 Ingress 失效。
TKE Ingress Controller 会逐步托管到 meta 集群,用户集群不可见。托管到 meta 集群的 Ingress Controller 版本和 Service Controller 版本一致。

Ingress 控制台操作指引

创建 Ingress

1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 在集群页面,选择目标集群 ID,进入集群基本信息页面。
3. 选择服务与路由,在 Ingress 页面,单击新建。
4. 新建服务与路由页面,根据实际需求,设置 Ingress 参数。关键参数信息如下:
Ingress 名称:自定义。
命名空间:根据实际需求进行选择。
Ingress 类型:根据实际需求进行选择,详情请参见 各类型 Ingress Controllers 功能对比
网络类型:默认为 “公网”,请根据实际需求进行选择。
负载均衡器:可自动创建或使用已有 CLB。
IP 版本:提供 IPv4、IPv6 NAT64、IPv6 三种版本,请根据实际需求进行选择。
VPC:支持选择“当前 VPC” 和“其他 VPC”。
运营商类型:支持 BGP(多线) 、中国移动单线、中国电信单线、中国联通单线。
网络计费模式:网络计费模式分为按带宽计费、按使用流量、共享带宽包。详情请参见 负载均衡计费模式
实例规格:支持共享型实例和性能容量型实例。
转发配置:协议默认为 HTTP,请根据实际情况进行选择。如果协议选择 HTTPS 则需绑定服务器证书,以保证访问安全。如下图所示:

证书详情请参见 SSL 证书格式要求及格式转换说明
5. 单击创建 Ingress,完成创建。

更新 Ingress

更新 YAML

1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 在集群页面,选择目标集群 ID,进入集群基本信息页面。
3. 选择服务与路由,在 Ingress 页面,找到目标 Ingress,单击编辑 yaml
4. 对 YAML 进行编辑,单击完成

更新转发规则

1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 在集群页面,选择目标集群 ID,进入集群基本信息页面。
3. 选择服务与路由,在 Ingress 页面,找到目标 Ingress,单击更新转发配置
4. 更新转发配置页面,根据实际需求,修改转发配置。如下图所示:



5. 单击更新转发配置,即可完成更新。

删除 Ingress

1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 在集群页面,选择目标集群 ID,进入集群基本信息页面。
3. 选择服务与路由,在 Ingress 页面,找到目标 Ingress,单击删除,在确认删除弹窗中点击确定。如下图所示:




重建 Ingress

如果 CLB 被误删、或者修改了某些需要更换 CLB 的注解(如修改子网)时,需要重建 Ingress 才能生效,下面是重建 Ingress 的操作方法。
1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 在集群页面,选择目标集群 ID,进入集群基本信息页面。
3. 选择服务与路由,在 Ingress 页面,找到目标 Ingress,单击编辑 yaml。如下图所示:



4. 复制 yaml 内容。
5. 删除 Ingress。
6. 单击集群页面右上角的 YAML 创建


7. 粘贴 Ingress 的 YAML 内容,移除自动生成的一些字段,如 status、managedFields、creationTimestamp、finalizers、generation、resourceVersion、uid 等。
8. 单击完成

Kubectl 操作 Ingress 指引

YAML 示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: qcloud ## 可选值:qcloud(CLB类型ingress), nginx(nginx-ingress),traefik
## kubernetes.io/ingress.existLbId: lb-xxxxxxxx ##指定使用已有负载均衡器创建公网/内网访问的Ingress
## kubernetes.io/ingress.subnetId: subnet-xxxxxxxx ##若是创建CLB类型内网ingress需指定该条annotation
name: my-ingress
namespace: default
spec:
rules:
- host: localhost
http:
paths:
- backend:
service:
name: non-service
port:
number: 65535
path: /
pathType: ImplementationSpecific
kind:标识 Ingress 资源类型。
metadata:Ingress 的名称、Label 等基本信息。
metadata.annotations:Ingress 的额外说明,可通过该参数设置腾讯云 TKE 的额外增强能力。
spec.rules:Ingress 的转发规则,配置该规则可实现简单路由服务、基于域名的简单扇出路由、简单路由默认域名、配置安全的路由服务等。

annotations: 使用已有负载均衡器创建公网/内网访问的 Ingress

如果您已有的应用型 CLB 为空闲状态,需要提供给 TKE 创建的 Ingress 使用,或期望在集群内使用相同的 CLB ,您可以通过以下 annotations 进行设置:
说明:
请了解 注意事项 后开始使用。
metadata:
annotations:
kubernetes.io/ingress.existLbId: lb-6swtxxxx

annotations: 创建 CLB 类型内网 Ingress

如果您需要使用内网负载均衡,可以通过以下 annotations 进行设置:
metadata:
annotations:
kubernetes.io/ingress.subnetId: subnet-xxxxxxxx

说明事项

如果您使用的是 IP 带宽包账号,在创建公网访问方式的服务时需要指定以下两个 annotations 项:
kubernetes.io/ingress.internetChargeType 公网带宽计费方式,可选值有:
TRAFFIC_POSTPAID_BY_HOUR(按使用流量计费)
BANDWIDTH_POSTPAID_BY_HOUR(按带宽计费)
kubernetes.io/ingress.internetMaxBandwidthOut 带宽上限,范围:[1,2000] Mbps。 例如:
metadata:
annotations:
kubernetes.io/ingress.internetChargeType: TRAFFIC_POSTPAID_BY_HOUR
kubernetes.io/ingress.internetMaxBandwidthOut: "10"

创建 Ingress

1. 参考 YAML 示例,准备 Ingress YAML 文件。
2. 安装 Kubectl,并连接集群。操作详情请参考 通过 Kubectl 连接集群
3. 执行以下命令,创建 Ingress YAML 文件。
kubectl create -f Ingress YAML 文件名称
例如,创建一个文件名为 my-ingress.yaml 的 Ingress YAML 文件,则执行以下命令:
kubectl create -f my-ingress.yaml
4. 执行以下命令,验证创建是否成功。
kubectl get ingress
返回类似以下信息,即表示创建成功。
NAME CLASS HOSTS ADDRESS PORTS AGE
my-ingress <none> localhost 80 4s

更新 Ingress

方法一

执行以下命令,更新 Ingress。
kubectl edit ingress/[name]

方法二

1. 手动删除旧的 Ingress。
2. 执行以下命令,重新创建 Ingress。
kubectl create/apply -f my-ingress.yaml

删除 Ingress

执行以下命令,删除 Ingress。
kubectl delete ingress/[name]