通过阿里云负载均衡SLB(Server Load Balancer)暴露的服务(Service),在集群外可通过SLB域名或<IP:服务端口>
的方式访问服务,在集群内可通过<服务名:服务端口>
的方式访问服务。本文以Nginx应用为例,介绍如何通过使用已有SLB的服务来公开应用。
前提条件
背景信息
如果您集群的Cloud Controller Manager(CCM)组件版本大于等于v1.9.3.59-ge3bc999-aliyun,对于指定已有SLB,CCM默认不再为该SLB处理监听。您可以通过设置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
参数来启用监听配置,或者手动配置该SLB的监听规则。
查看CCM版本的方法:
- 使用控制台:在集群组件管理页面查看CCM组件版本。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,单击集群。
- 在集群列表页面,在目标集群右侧,选择 ,进入组件管理页签查看CCM的版本信息。
- 使用kubectl命令行(仅适用于专有版集群):执行以下命令查看CCM组件版本。
kubectl get pod -n kube-system -o yaml|grep image:|grep cloud-con|uniq
注意事项
- 被复用的SLB需要满足以下限制条件:
- 支持复用通过SLB控制台创建的SLB,不支持复用CCM自动创建的SLB。
- 如果您需要在Kubernetes集群中复用私网类型的SLB,则该SLB需要和Kubernetes集群处于同一VPC下。
- 复用SLB的地址类型必须与服务的访问类型一致。当服务为公网访问(即
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"
)时,所用SLB的地址类型必须为公网;当服务为内部访问(即service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
)时,所用SLB的地址类型必须为私网。 - 多个服务不能同时使用一个SLB的同一个监听端口。
- CCM只为
Type=LoadBalancer
类型的服务配置SLB。对于非LoadBalancer类型的服务,则不会为其配置负载均衡。注意 当Type=LoadBalancer
的服务变更为其他类型时,CCM会删除为该SLB添加的配置,从而造成无法通过该SLB访问服务。 - CCM使用声明式API,会在一定条件下自动根据服务的配置刷新SLB配置。当
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners:
设置为true
时,您自行在SLB控制台上修改的配置均存在被覆盖的风险。注意 请勿在SLB控制台上手动修改Kubernetes创建并维护的SLB的任何配置,否则有配置丢失的风险,造成服务不可访问。 - 已创建的LoadBalancer类型Service不支持重新指定SLB。如果您需要更换SLB,请重新创建Service。
SLB配额限制
- CCM会为
Type=LoadBalancer
类型的Service创建SLB。默认情况下一个用户可以保留60个SLB实例。如果需要创建的SLB数量大于60,请提交工单给SLB产品。说明 您可以在提交工单时,说明需要修改slb_quota_instances_num
参数,用于提高您可保有的SLB实例个数。 - CCM会根据Service中定义的端口创建SLB监听。默认情况下一个SLB实例可以添加50个监听,如需添加更多监听,请提交工单给SLB产品。
说明 您可以在提交工单时,说明需要修改
slb_quota_listeners_num
参数,用于提高每个实例可以保有的监听数量。 - CCM会根据Service的配置将ECS挂载到SLB后端服务器组中。
- 默认情况下一个ECS实例可挂载的后端服务器组的数量为50个,如果一台ECS需要挂载到更多的后端服务器组中,请提交工单给SLB产品。
说明 您可以在提交工单时,说明需要修改
slb_quota_backendserver_attached_num
参数,用于提高同一台服务器可以重复添加为SLB后端服务器的次数。 - 默认情况下一个SLB实例可以挂载200个后端服务器,如果需要挂载更多的后端服务器,请提交工单给SLB产品。
说明 您可以在提交工单时,说明需要修改
slb_quota_backendservers_num
参数,提高每个SLB实例可以挂载的服务器数量。
关于更多SLB使用限制,请参见使用限制。关于如何查询负载均衡SLB配额,请参见负载均衡SLB配额管理。
- 默认情况下一个ECS实例可挂载的后端服务器组的数量为50个,如果一台ECS需要挂载到更多的后端服务器组中,请提交工单给SLB产品。
步骤一:部署示例应用
以下应用部署通过kubectl命令行方式进行。如果您需要通过控制台部署应用,请参见创建无状态工作负载Deployment。
步骤二:通过使用已有SLB的服务公开应用
您可以通过控制台和kubectl两种方式来创建LoadBalancer类型的服务,并通过其公开应用。
控制台方式
Kubectl方式