CCE集群高可用部署指导

网友投稿 1028 2022-05-28

【背景介绍】

云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器。

本文从CCE容器部署高可用以及CCE容器业务高可用两个方面详细介绍了CCE集群的高可用的指导方案。

【指导方案】

1.1   CCE容器高可用部署

1.1.1   容器基础设施(集群)的高可用

容器高可用依赖于基础设施(集群)的高可用,集群是单AZ部署,一旦发生单AZ或者单节点故障,业务必然受到影响。

AZ级别的CCE高可用集群,如果集群的master节点有一半以上的节点故障,集群将不可用。

如下参考链接,详细讲解了如何购买4种CCE的高可用集群的操作步骤:

1)购买混合集群:https://support.huaweicloud.com/usermanual-cce/cce_01_0028.html

2)购买鲲鹏集群:https://support.huaweicloud.com/usermanual-cce/cce_01_0121.html

3)购买GPU集群:https://support.huaweicloud.com/usermanual-cce/cce_01_0122.html

4)购买Turbo集群:https://support.huaweicloud.com/usermanual-cce/cce_01_0246.html

1.1.2   容器实例的高可用

容器高可用依赖于多实例部署,在合理配置反亲和后,如果发生单实例、单节点、单AZ故障,业务均不受影响。

容器高可用部署方式展示

使用华为云CCE的亲和性策略:自身反亲和(节点级别), 使所有的pod强制调度到不同的节点上。

新创建的工作负载按照规则发布,已经创建的工作负载kill或驱逐老实例,实现工作负载自身反亲和(节点级别)。

a.如下图,现有1个CCE集群,有3个node节点部署。

CCE集群的3个node节点

b.添加工作负载的调度策略,使用负载与自身反亲和(节点级别),如图。

负载与自身反亲和(节点级别)配置

c.则工作负载的POD都被调度到不同Node,如图。

工作负载的pod都被调度到不同Node

使用华为云CCE的亲和性策略:自身反亲和(可用区级别) ,所有的pod实例会被调度到不同的可用区上。

新创建的工作负载按照规则发布,已经创建的工作负载kill或驱逐老实例,实现工作负载自身反亲和(可用区级别)

a.       如下图,现有1个CCE集群,有3个node节点部署。

CCE集群的3个node节点

b.添加工作负载的调度策略,使用负载与自身反亲和(可用区级别),如右图。

负载与自身反亲和(节点级别)配置

c.则工作负载的POD都被调度到不同可用区,如右图。

负载与自身反亲和(节点级别)配置

如下参考链接,详细讲解了工作负载的反亲和性的操作步骤:

工作负载间的反亲和性:https://support.huaweicloud.com/usermanual-cce/cce_01_0227.html

1.1.3   容器数据存储-高可用(EVS OBS SFS)

容器存储可以将容器中的数据可以保存在EVS共享盘(支持跨节点,不支持跨可用区)、OBS桶(支持跨节点跨可用区)、SFS(支持跨节点跨可用区)等,此后,容器发生迁移时,相应的存储会伴随容器进行迁移(自动从原节点卸载,并挂载到新节点)。

容器化集群高可用部署的基本拓扑图

a.所有实例都同时Active,通过负载均衡把请求分发到集群的不同实例中,集群中任何一个主实例出现故障,不影响其他主实例运行,可将数据保存到EVS共享盘(支持跨节点,不支持跨可用区)、OBS桶(支持跨节点跨可用区)、SFS(支持跨节点跨可用区)中。(右图为跨节点示意图)

b.客户无保存数据的诉求,不用考虑数据的保存问题。

a.所有实例只有一个主能提供服务,有一个或多个备是Standby状态,通过主备实例切换或主实例选举(毫秒级完成)来保证高可用,可将数据保存在云硬盘(不支持跨节点)、 EVS共享盘(支持跨节点,不支持跨可用区)、OBS桶(支持跨节点跨可用区)、SFS(支持跨节点跨可用区)(右图为跨节点示意图)

CCE集群高可用部署指导

b.客户无保存数据的诉求,不用考虑数据的保存问题。

1.2   CCE 容器业务的高可用

1.2.1   弹性伸缩-CCE-autoscaler-node节点弹性扩缩

如下参考链接,详细讲解了创建以及管理节点伸缩策略的操作步骤:

创建节点伸缩策略:https://support.huaweicloud.com/usermanual-cce/cce_01_0209.html

管理节点伸缩策略:https://support.huaweicloud.com/usermanual-cce/cce_01_0063.html

1.2.2   弹性伸缩-CCE-HPA-POD实例弹性扩缩容(无状态工作负载)

HPA工作机制

HPA(Horizontal Pod Autoscaler)是用来控制Pod水平伸缩的控制器,HPA周期性检查Pod的度量数据, 计算满足HPA资源所配置的目标数值所需的副本数量,进而调整目标资源(如Deployment)的replicas字段。

HPA可以配置单个和多个度量指标,配置单个度量指标时,只需要对Pod的当前度量数据求和,除以期望目标值,然后向上取整,就能得到期望的副本数。例如有一个Deployment控制有3个Pod,每个Pod的CPU使用率是70%、50%、90%,而HPA中配置的期望值是50%,计算期望副本数=(70 + 50 + 90)/50 = 4.2,向上取整得到5,即期望副本数就是5。

如果是配置多个度量指标,则会分别计算单个度量指标的期望副本数量,然后

取其中最大值,就是最终的期望副本数量。

如下参考链接,详细讲解了创建以及管理工作负载伸缩策略的操作步骤:

1)创建工作负载伸缩策略:https://support.huaweicloud.com/usermanual-cce/cce_01_0208.html

2)管理工作负载伸缩策略:https://support.huaweicloud.com/usermanual-cce/cce_01_0083.html

备注:CCE-HPA-POD实例弹性扩缩容是影响CCE-autoscaler-node节点弹性扩缩容的一个因素,但是CCE-HPA-POD实例弹性扩缩容和CCE-autoscaler-node节点弹性扩缩容之间没有绝对有规律的关系。

1.2.3   滚动升级

kubernetes提供了一种比较方便的方式为滚动升级,在升级过程中,对集群中的实例进行逐渐替换成新版本(按照替换比例,先启动新实例再杀掉老实例),保证了服务的可用性。

升级实例过程中的业务不中断:https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_00223.html)

如果老实例为长连接,为了保证客户业务在滚动升级时,不受影响,设置容器生命周期为停止前处理(容器停止前触发。设置停止前处理,确保升级或实例删除时可提前将实例中运行的业务排水。)

停止前处理:https://support.huaweicloud.com/usermanual-cce/cce_01_0105.html#cce_01_0105__section2334114473712

Kubernetes 云容器引擎 CCE

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spark内存管理解析
下一篇:在ROS下建立编译链接PCL模块
相关文章