腾讯云容器服务 TKE 标准集群 Ingress 管理 - CLB 类型 Ingress 概述
文档简介:
Service 提供了基于四层网络的集群内容器服务的暴露能力,Service 暴露类型(例如 ClusterIP、NodePort 或 LoadBalancer)均基于四层网络服务的访问入口,缺少基于七层网络的负载均衡、SSL 或基于名称的虚拟主机等七层网络能力。Ingress 提供七层网络下 HTTP、 HTTPS 协议服务的暴露,及七层网络下的常见能力。
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 相关操作及功能如下,您可参考以下文档进一步了解:
Ingress 基本功能
Ingress 使用已有 CLB
Ingress 使用 TkeServiceConfig 配置 CLB
Ingress 混合使用 HTTP 及 HTTPS 协议
Ingress 证书配置