You need to enable JavaScript to run this app.
导航
负载均衡服务使用注意事项
最近更新时间:2024.09.20 11:50:28首次发布时间:2024.09.20 11:50:28

当 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 中 spec 和 Annotation 字段均未发生变化,则不会刷新 CLB 配置。此时,CLB 实际配置依然与负载均衡控制台所做的修改保持一致。

      • 下次调谐时,如果 Service 中 spec 或 Annotation 字段发生了变化,则会根据 Annotation 刷新 CLB 配置。此时,在负载均衡控制台上修改的配置会被覆盖。

        注意

        当您在 Service 中修改了 spec 或 Annotation 字段后,Service 调谐时,可能导致在负载均衡控制台手动修改的 CLB 配置被覆盖。为避免上述问题,在通过 Service 的 Annotation 字段修改 CLB 配置时,请保证所有配置均与负载均衡控制台上的一致。

    • 如果 Annotation 中没有相关功能的配置,则 CLB 的配置和负载均衡控制台上的配置一致,Service 的调谐不会修改负载均衡控制台上的配置。

    • 如果 Annotation 中有相关配置(例如:监听器的访问控制),接着删除了相关的 Annotation,则 CLB 的相关功能维持现状(例如 ACL 依然处于开启状态)。如果希望通过 Annotation 关闭相关功能,需要在 Annotation 中将相关功能的配置设置为关闭状态,而不是直接删除对应的 Annotation。

其他注意事项

  • 请勿擅自在负载均衡控制台上更改 Service 创建或维护的 CLB 实例、监听器、后端服务器组和转发规则,否则将造成集群中的负载均衡服务异常。
  • 请勿修改监听器和后端服务器组的名称中带有k8s_前缀的内容。
  • 请勿修改转发规则描述中带有k8s_前缀的内容。
  • 使用负载均衡产品,会产生云基础资源使用费用。详细信息,请参见 负载均衡产品计费