概述

最近更新时间:2024-09-09 17:31:51

我的收藏
Service 提供了基于四层网络的集群内容器服务的暴露能力,Service 暴露类型(例如 ClusterIP、NodePort 或 LoadBalancer)均基于四层网络服务的访问入口,缺少基于七层网络的负载均衡、SSL 或基于名称的虚拟主机等七层网络能力。Ingress 提供七层网络下 HTTP、 HTTPS 协议服务的暴露,及七层网络下的常见能力。

Ingress 基本概念

Ingress 是允许访问到集群内 Service 规则的集合,您可以通过配置转发规则,实现不同 URL 可以访问到集群内不同的 Service。为了使 Ingress 资源正常工作,集群需运行 Ingress Controller,容器服务在集群内默认启用了基于腾讯云负载均衡器实现的 TKE Ingress Controller。

Ingress 生命周期管理

Ingress 对外服务的能力依赖于负载均衡所提供的资源,因此服务资源管理也是 Ingress 的重要工作之一。Ingress 在资源的生命周期管理上会使用以下标签:
标签
描述
tke-createdBy-flag = yes
标识该资源是容器服务创建,拥有该标签的 Ingress 会在销毁时删除对应资源。
如果没有该标签,Ingress 会在销毁时,仅删除负载均衡内的监听器资源,而不删除负载均衡自身。
tke-clusterId = <clusterId>
标识该资源被哪一个 Cluster 所使用。
Ingress 会在销毁时,删除对应标签(ClusterId 需正确)。
tke-lb-ingress-uuid = <Ingress UUID>
标识该资源被哪一个 Ingress 所使用。
Ingress 目前不支持复用,当用户指定 Ingress 使用已有负载均衡时,标签的值若不正确会被拒绝。
Ingress 会在销毁时,删除对应标签(Ingress UUID 需正确)。
说明:
上述标签对用户只读,请不要修改或删除上述标签,否则可能导致资源泄漏。
若用户使用了已有负载均衡,则 Service 仅会使用该负载均衡,而不会删除该负载均衡。

Ingress Controller 使用方法

除了腾讯云服务提供的 TKE Ingress Controller 以外,Kubernetes 社区还有各种类型的第三方 Ingress Controller,这些 Ingress 控制器均为完成服务的七层网络暴露。Kubernetes 社区基本支持使用 kubernetes.io/ingress.class 注解用于区分各种 Ingress 控制器,以确定当前 Ingress 资源应被哪一个控制器处理。TKE Ingress Controller 也支持使用该注解,具体规则及使用建议如下:
当 Ingress 资源没有描述注解 kubernetes.io/ingress.class 时,TKE Ingress Controller 会管理当前 Ingress 资源。
当 Ingress 资源有注解 kubernetes.io/ingress.class 且值为 qcloud 时,TKE Ingress Controller 会管理当前 Ingress 资源。
当 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 注意事项

请勿在负载均衡控制台手动删除 Ingress 所关联的 CLB 实例,也不能手动修改 CLB 的配置,CLB 相关操作都应在 TKE 侧进行。
如果您已在负载均衡控制台手动删除 Ingress 所关联的 CLB 实例,请参见常见问题进行恢复。

Ingress 相关操作

Ingress 相关操作及功能如下,您可参考以下文档进一步了解: