负载均衡(loadbalancer)
负载均衡(LoadBalancer)
1. 操作场景
负载均衡 ( LoadBalancer )使用负载均衡直通容器,使部署在容器中的业务时延降低、性能无损耗。
负载均衡访问方式由负载均衡服务地址以及设置的服务端口组成,例如“10.117.117.117:80”。
从集群外部访问时,从LoadBalancer直接转发到Pod;集群内部访问可通过Service转发到Pod。
2. 约束与限制
使用控制台创建LoadBalancer类型的Service时会自动生成一个节点端口(nodeport),端口号随机。使用kubectl创建LoadBalancer类型的Service时,如不指定节点端口,也会随机生成一个节点端口,端口号随机。
3. 创建Service
3.1. 创建步骤
操作详情请参见 创建Service :
- 新建LoadBalancer类型Service,并选择私网访问,创建后会自动从容器网络中分配一个IP以提供服务发现;
- 新建LoadBalancer类型Service,并选择公网访问,创建后会自动分配一个EIP以提供服务发现。
3.2. 转发策略
容器集群为 LoadBalancer 类型的Service提供了多种转发策略,通过对 LoadBalancer 类型的Service添加注释:service.kubernetes.io/csk-loadbalancer-scheduler: {rr, sh, lc} ,选择不同的转发策略。
注意事项
- 默认不会添加注释,转发策略为轮询转发。
- 新建LoadBalancer 类型的Service,可以添加注释选择不同的转发策略。
- 对于已有LoadBalancer 类型的Service修改转发策略,需要在添加注释后,删除端口映射规则,并重新添加,新的转发策略才能生效。
转发策略 | 说明 |
---|---|
rr (roundrobin) | 轮询 |
sh (source host) | 源主机 |
lc (least connection) | 最少连接数 |
4. 访问service
执行命令kubectl --kubeconfig KUBECONFIG_NAME get svc
回显如下,表示工作负载访问方式已设置成功,工作负载可访问。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.247.0.1 <none> 443/TCP 3d
nginx-lb-svc LoadBalancer 172.16.26.7 175.102.135.212 88:31540/TCP 51s
在浏览器中输入访问地址,例如输入175.102.135.212:88,175.102.135.212为负载均衡的IP地址,88为Service的服务端口,即可通过负载均衡访问Pod,如图访问nginx示例: