当Service的类型设置为负载均衡,即Type=LoadBalancer
时,容器服务ACK的CCM(Cloud Controller Manager)组件会为该Service创建或配置一个负载均衡实例。该实例类型包含:传统型负载均衡CLB(Classic Load Balancer)和网络型负载均衡NLB(Network Load Balancer),配置包括实例、监听、后端服务器组等资源。本文介绍配置Service负载均衡的注意事项以及CCM的资源更新策略。
注意事项
哪些负载均衡可以被复用?
仅支持复用通过负载均衡控制台创建的实例,不支持复用cloud-controller-manager自动创建的负载均衡实例。
如果您需要在ACK集群中复用私网类型的负载均衡实例,则该实例需要和ACK集群处于同一VPC下。跨VPC复用仅适用于NLB实例。
复用负载均衡实例的地址类型必须与服务的访问类型一致。当服务为公网访问(即
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"
)时,所用负载均衡的地址类型必须为公网;当服务为内部访问(即service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
)时,所用负载均衡的地址类型必须为私网。多个服务不能同时使用一个负载均衡的同一个监听端口。
跨集群复用已有负载均衡实例时,需要确保两个集群的命名空间和Service组合名称不一致。
CCM管理负载均衡时注意事项
CCM只为
Type=LoadBalancer
类型的Service配置负载均衡,对于非LoadBalancer类型的Service则不会为其配置负载均衡。CCM使用声明式API,会在一定条件下自动根据Service的配置刷新负载均衡配置。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners:
设置为"true"
时,您自行在负载均衡控制台上修改的配置均存在被覆盖的风险。
当Type=LoadBalancer
的Service变更为Type!=LoadBalancer
时,CCM会删除为该负载均衡添加的配置,从而造成无法通过该负载均衡访问Service。
请勿在负载均衡控制台上手动修改ACK创建并维护的负载均衡的任何配置,否则有配置丢失的风险,造成Service不可访问。
如果需要为集群更换负载均衡实例,该如何操作?
已创建LoadBalancer类型的Service不支持重新指定负载均衡实例。如果您需要更换负载均衡实例,请重新创建Service。
配额限制
VPC
集群中一个节点对应一条路由表项,VPC默认情况下仅支持200条路由表项,如果集群节点数目多于200个,请到配额平台提交申请。
更多VPC使用限制,请参见限制与配额。
查询VPC配额,请参见专有网络VPC配额管理。
负载均衡
负载均衡更新策略
ACK支持为Service指定一个已有的负载均衡实例,或者让CCM自动创建新的负载均衡实例。两种方式在负载均衡的资源更新策略方面存在一些差异,如下表所示。
资源对象 | 指定已有负载均衡 | CCM管理负载均衡 |
负载均衡 | 设置annotation:
|
|
监听 | 设置annotation:
| CCM会根据Service的配置,自动创建和配置监听策略。 |
后端服务器组 | 当Service对应的后端Endpoint或者集群节点发生变化时,CCM会自动更新负载均衡的后端虚拟服务器组。
|