云容器引擎支持将Service通过负载均衡ELB向外暴露, 云容器引擎集群内置CCM(Cloud Controller Manager)插件,当Service的类型为LoadBalancer时,CCM插件会为Service配置负载均衡,并根据Service信息配置好负载均衡的后端服务器组、健康检查和监听规则等,使得用户可以通过负载均衡访问该Service。以下是使用负载均衡的步骤指引。
使用已有负载均衡暴露服务
前提条件
用户已提前在负载均衡控制台创建好ELB实例(创建ELB请参考文档),且ELB实例需要与Service所在的容器集群在同一个VPC网络下。
注意1、不同Service可以同时复用同一个负载均衡实例,复用同一个负载均衡实例需要避免不同Service使用相同的服务端口,否则存在监听配置被覆盖的情况
2、不能复用由CCM自动创建的或集群ApiServer使用的负载均衡实例
3、当Service删除时,使用已有的负载均衡不会被删除
4、集群Master节点不作为负载均衡实例的后端
操作步骤
1、登录 云容器引擎 控制台,点击进入想要操作的集群,在左侧菜单选择“网络” -> “服务”;
2、如下图,点击“新建”按钮新建服务,按照参数说明配置相关的参数;
- 服务访问方式:选择负载均衡
- 负载均衡:可根据业务需要选择私网访问或公网访问,集群内或同一VPC内访问建议选择私网访问即可;选择“使用已有负载均衡”;负载均衡实例列表会根据选择的私网/公网访问方式显示出对应的实例,选择想要使用的负载均衡实例即可
- 标签:根据需要可以为服务配置标签
- 注解:根据需要可以为服务配置注解
- 外部流量策略:Cluster或Local。Cluster策略下,集群所有可用工作节点都会挂载到负载均衡实例;Local策略下,只有Service对应的Pod所在节点会挂载到负载均衡实例
- 端口映射:配置好协议、容器端口及服务端口,其中容器端口为应用本身暴露的端口,服务端口则会作为负载均衡实例的监听端口
- 工作负载绑定:选择服务要关联的工作负载,也可以配置自定义标签关联
3、如下图,提交后,在服务列表可以看到该服务,通过服务的集群外访问地址即可以访问该服务。
LoadBlance类型Service流量走向
访问LoadBlance类型Service,流量走向主要和外部流量策略及网络插件类型有关。如下所示:
外部流量策略为cluster
当外部流量策略为cluster时,业务LoadBlance类型Service会把集群所有工作节点添加到LoadBlance实例后端。此时访问LoadBlance的流量,将均衡到各个工作节点的NodePort,随后二次转发到对应的Pod后端,如下图所示:
外部流量策略为local,网络插件为calico
此时,只有Pod所在节点才会加入LoadBlance实例后端,访问LoadBlance的流量将均衡到Pod所在节点,不做SNAT处理直接二次转发到节点上的Pod后端,如下图所示:
外部流量策略为local,网络插件为cubecni
cubecni网络插件为Pod分配VPC地址,此场景下,Pod直接加入LoadBlance实例后端组,访问LoadBlance的流量将直接发送到Pod,不经过Service二次转发,性能较优,如下图所示: