• 沒有找到結果。

CCE Turbo集群使用云原生网络2.0,用户在集群中部署工作负载应用时,容器网络将 使用弹性网卡/辅助弹性网卡能力,应用发布成了LoadBalance类型的Service或Ingress 且对接的独享型ELB,经过ELB的访问流量支持直通到容器中;当应用进行滚动升级或 者弹性扩缩容,通过配置容器探针,最短就绪时间等可以做到优雅升级,从而实现优 雅弹性扩缩容(在升级或者扩缩容过程中业务不会出现5xx的错误响应)。

操作步骤

下文以nginx的无状态工作负载为例子,提供了CCE Turbo集群中应用进行优雅滚动升 级或者弹性扩缩容最佳实践。

步骤1 在CCE控制台,单击左侧栏目树中的“工作负载 > 无状态负载 Deployment”,单击 右上角“创建无状态工作负载”。

3-47 创建 nginx 无状态应用

步骤2 在容器设置步骤中,单击展开“健康检查”,如下图设置工作负载业务探针。

该配置的作用:检查用户业务是否就绪,不就绪则不转发流量到当前实例。

3-48 配置业务探针

步骤3 单击展开“生命周期”,配置容器的“停止前处理”,保证容器在退出过程中能够对 外提供服务。

该配置的作用:保证业务容器在退出过程中能够对外提供服务。

3-49 配置停止前处理

步骤4 单击“下一步:工作负载访问设置”,如下图设置访问类型和端口配置。

3-50 创建 nginx 的 Service 服务

步骤5 单击“下一步”并完成工作负载的创建,配置最短就绪时间,最短就绪时间用于指定 新创建的Pod在没有任意容器崩溃情况下的最小就绪时间,只有超出这个时间Pod才被 视为可用,推荐的配置时长为业务容器的启动预期时间加上ELB服务下发member到生 效的时间。

3-51 配置最短就绪时间

步骤6 存量工作负载可在工作负载详情中修改,修改方式请单击右上角的“编辑YAML”进行 配置。如下图所示:

3-52 配置最短就绪时间(YAML 方式)

说明

最短就绪时间用于指定新创建的Pod在没有任意容器崩溃情况下的最小就绪时间,只有超出这个 时间Pod才被视为可用。

步骤7 创建对接独享型负载均衡类型的service。

3-53 创建对接独享型负载均衡类型的 service

步骤8 配置完成后,我们对应用进行升级和弹性扩缩容的打流测试:准备一台集群外的客户 端节点(集群的节点访问service会进行集群内转发而不经过ELB),预置检测脚本 detection_script.sh,将下列内容拷贝到脚本中,其中192.168.12.82:80为service的访 问地址:

#! /bin/bash for (( ; ; ))

do curl -I 192.168.12.82:80 | grep "200 OK"

if [ $? -ne 0 ]; then

echo "response error!"

exit 1

fi done

步骤9 运行检测脚本:bash detection_script.sh,并在CCE界面触发应用的滚动升级,如下 方例子为增加了容器的环境变量,触发了应用的滚动升级。

3-54 触发应用的滚动升级

步骤10 我们可以观察到,滚动升级的过程中,应用的访问并未中断,且返回的请求都是200 ok,证明我们的升级过程是优雅升级,是没有中断的。

3-55 优雅升级结果

----结束

3.14 LoadBalancer 类型 Service 使用 pass-through 能力

应用现状

Kubernetes集群可以将运行在一组Pod上的应用程序发布为服务,提供统一的四层访 问入口。对于Loadbalancer类型的service,kube-proxy默认会将Service的status中 LoadbalanceIP地址配置到节点本地的转发规则中,集群内部访问ELB的地址,流量就 会在集群内部转发,而不会经过ELB转发。

集群内部转发功能是kube-proxy组件负责,kube-proxy有iptables和IPVS两种转发模 式,iptables是一种简单的轮询转发,IPVS虽有多种转发模式,但也需要修改kube-proxy的启动参数,不能像ELB那样灵活配置转发策略,且无法利用ELB的健康检查能 力。

解决方案

CCE服务支持pass-through能力,通过Loadbalance类型Service配置kubernetes.io/

elb.pass-through的annotation实现集群内部访问Service的ELB地址时绕出集群,并通 过ELB的转发最终转发到后端的Pod。

3-56 pass-through 访问示例

● 针对CCE集群:

– 集群内部访问LB类型service,默认行为是通过iptables/ipvs转发到后端的容 器实例。

– LB类型service配置elb.pass-through,集群内访问Service地址流量能支持先 转发到ELB,利用了ELB的负载均衡能力回到节点。

● 针对CCE Turbo集群:

– 集群内部访问LB类型service,默认行为是通过iptables/ipvs转发到后端的容 器实例。

– LB类型service配置elb.pass-through,集群内访问Service地址流量能支持先 转发到ELB,利用了ELB的负载均衡能力流量直通到容器中。