当 Service 的类型为负载均衡(LoadBalancer),即type: LoadBalancer
时,容器服务 CCM(Cloud Controller Manager)组件会为该 Service 创建或复用一个负载均衡(Cloud Load Balancer,CLB)实例。本文介绍配置负载均衡类型 Service 时的主要注意事项。
新建/复用负载均衡实例 当您在容器服务集群中通过控制台或 YAML 配置负载均衡类型的 Service 时,允许新建或复用负载均衡实例。新建和复用负载均衡实例的主要区别,如下表所示。
资源对象 新建 CLB 复用 CLB CLB
控制器会根据控制台或 Annotation 的配置,自动创建 CLB、监听器和后端服务器组。 删除 Service 时,控制器会删除自动创建的 CLB。 在 Annotation 配置service.beta.kubernetes.io/volcengine-loadbalancer-id
中指定复用 CLB 实例的 ID。 控制器会根据 Annotation 中的其他配置,为 CLB 创建监听器和后端服务器组。 删除 Service 时,控制器会删除为复用 CLB 创建的监听器和后端服务器组,不会删除 CLB 实例。 说明
仅支持复用通过负载均衡控制台创建的 CLB,不支持复用通过容器服务 LoadBalancer 类型的 Service 自动创建的 CLB。 CLB 在 VPC 内提供负载均衡,复用的 CLB 需要和集群处于同一个 VPC。 监听器
控制器会根据控制台或 Annotation 的配置,自动创建监听器和后端服务器组。 删除 Service 时,控制器会删除创建的监听器和后端服务器组。 控制器会根据 Annotation 的配置,自动创建监听器和后端服务器组。 控制器无法在指定复用 CLB 上已经存在的端口上创建监听器。
CCM 调谐机制 当 Service 的类型为负载均衡(LoadBalancer),即type: LoadBalancer
时,容器服务 CCM(Cloud Controller Manager)组件会为该 Service 创建或复用一个 CLB 资源,包括实例、监听器、后端服务器组等资源。
同时,CCM 组件会在以下场景触发调谐:
创建/删除/修改 Service 时,后端的变化(例如:Pod IP 改变,新增/下线 Pod)。 Service 配置中有字段发生变化时,包括 Annotation、spec 和 status。 控制器的 Pod 重启。 配置注意事项 建议统一在 VKE 控制台上或通过 YAML 配置 CLB 实例的参数。若在均衡负载控制台上修改 Serivce 指定或维护的资源和配置(例如:转发规则),可能存在配置被覆盖的风险。 在负载均衡控制台手动修改 CLB 实例配置时,控制器无法感知。因此,控制器无法将负载均衡控制台中的修改写入 Service 的 Annotation 中。当 Service 触发调谐时,在负载均衡控制台上修改的配置可能会被控制器根据 Annotation 中的配置刷新。 由于 CLB 的部分配置,既可以通过 Service 的 Annotation 配置,也可以通过 CLB 控制台配置,为避免两侧的配置相互覆盖,导致业务故障。容器服务中 CLB 配置项的处理逻辑如下:
首次配置时,如果在 Service 的 Annotation 中存在相关配置(例如:监听器的访问控制),则 CLB 的配置和 Annotation 保持一致。 当您在负载均衡控制台手动修改 CLB 的配置后,直到 Service 下次调谐前,CLB 的配置都与负载均衡控制台所做的修改保持一致。当 Service 再次调谐时,系统会根据 Service 中 spec 和 Annotation 字段的修改情况进行配置刷新:
其他注意事项 请勿擅自在负载均衡控制台上更改 Service 创建或维护的 CLB 实例、监听器、后端服务器组和转发规则,否则将造成集群中的负载均衡服务异常。 请勿修改监听器和后端服务器组的名称中带有k8s_
前缀的内容。 请勿修改转发规则描述中带有k8s_
前缀的内容。 使用负载均衡产品,会产生云基础资源使用费用。详细信息,请参见 负载均衡产品计费 。