Service 提供了基于四层网络的集群内容器服务的暴露能力,Service 暴露类型(例如 ClusterIP、NodePort 或 LoadBalancer)均基于四层网络服务的访问入口,缺少基于七层网络的负载均衡、SSL 或基于名称的虚拟主机等七层网络能力。Ingress 提供七层网络下 HTTP、 HTTPS 协议服务的暴露,及七层网络下的常见能力。
Ingress 是允许访问到集群内 Service 规则的集合,您可以通过配置转发规则,实现不同 URL 可以访问到集群内不同的 Service。为了使 Ingress 资源正常工作,集群需运行 Ingress Controller
,容器服务在集群内默认启用了基于腾讯云负载均衡器实现的 TKE Ingress Controller
。
Ingress 对外服务的能力依赖于负载均衡所提供的资源,因此服务资源管理也是 Ingress 的重要工作之一。Ingress 在资源的生命周期管理上会使用以下标签:
标签 | 描述 |
---|---|
tke-createdBy-flag = yes |
|
tke-clusterId = <clusterId> |
|
tke-lb-ingress-uuid = <Ingress UUID> |
|
除了腾讯云服务提供的 TKE Ingress Controller
以外,Kubernetes 社区还有各种类型的第三方 Ingress Controller
,这些 Ingress 控制器均为完成服务的七层网络暴露。Kubernetes 社区基本支持使用 kubernetes.io/ingress.class
注解用于区分各种 Ingress 控制器,以确定当前 Ingress 资源应被哪一个控制器处理。TKE Ingress Controller
也支持使用该注解,具体规则及使用建议如下:
kubernetes.io/ingress.class
时,TKE Ingress Controller
会管理当前 Ingress 资源。kubernetes.io/ingress.class
且值为 qcloud
时,TKE Ingress Controller
会管理当前 Ingress 资源。kubernetes.io/ingress.class
的内容时,TKE Ingress Controller
会根据注解内容将其纳入或脱离管理范围,其操作会涉及到资源的创建与释放。TKE Ingress Controller
时,可以将集群中的 Deployment
(kube-system:l7-lb-controller
)的工作副本数量调整为0,从而关闭 TKE Ingress Controller
功能。
说明:
- 关闭该功能前,请确保集群中没有被
TKE Ingress Controller
管理的 Ingress 资源,避免出现负载均衡资源释放失败的情况。- 若用户在负载均衡上面开启了删除保护,或者使用私有连接,则删除 Service 时,不会删除该负载均衡。
Ingress 相关操作及功能如下,您可参考以下文档进一步了解:
本页内容是否解决了您的问题?