操作场景
您可通过多个 Service 复用相同负载均衡器 CLB 的能力,来支持在同一个 VIP 同时暴露 TCP 及 UDP 的相同端口。
注意:
其他场景下均不建议使用多个 Service 复用相同的 CLB。
说明事项
- 如果您的集群是 TKE Serverless 集群,集群默认已开启了 CLB 复用能力,但需要注意以下内容:
- 用于复用的 CLB 必须为用户手动购买,而非 Serverless 集群自动购买。Serverless 集群自动购买的 CLB 在复用时会报错,是为了保护复用 CLB 的 Service 的 CLB 不被 Serverless 集群回收。
- CLB 购买成功后,需要在 Service 里添加两个 Annotation:
- service.kubernetes.io/qcloud-share-existed-lb:"true"
- service.kubernetes.io/tke-existed-lbid:lb-xxx
- Service 和 CLB 之间配置的管理和同步是由以 CLB ID 为名字的 LoadBalancerResource 类型的资源对象,请勿对该 CRD 进行任何操作,否则容易导致 Service 失效。
- 在业务发版时(滚动更新),请避免同时对这些 Service 关联的后端服务进行发版,因为同步这些复用相同 CLB 的 Service 的操作是串行的(保证同步结果的准确性),如果多个 Service 后端同时在更新,部分后端的流量摘除可能就不及时,容易造成流量异常,同时 优雅停机 的能力也不能真正生效。
使用限制
多个 Service 复用相同 CLB 时,Service 的端口不能重复。
在 Service 复用场景下,单个负载均衡管理的监听器数量由 CLB 的 TOTAL_LISTENER_QUOTA 限制。
在 Service 复用场景下,只能使用用户自行创建的负载均衡。因为容器服务 TKE 集群创建的负载均衡在被复用的情况下,负载均衡资源可能因为无法释放而导致泄漏。
注意:
负载均衡资源被复用后,该 CLB 的生命周期将不由 TKE 侧控制,需要自行管理,请谨慎操作。
操作步骤
- 参考创建负载均衡实例,创建集群所在 VPC 下的公网或内网类型的负载均衡。
- 参考 创建 Deployment 或 创建 Service,创建 LoadBalancer 类型的 Service,选择使用已有负载均衡,并选择 步骤1 中创建的负载均衡实例。
- 重复步骤2,即可完成通过多个 Service 复用相同负载均衡器 CLB。