基本原则
在CCE中,容器部署要实现高可用,可参考如下几点:
1.容器以集群形式部署。
2.创建节点选择在不同的可用区,在多个可用区(AZ)多个节点的情况下,根据自身业务需求合理的配置自定义调度策略,可达到资源分配的最大化。
3.创建多个节点池,不同节点池部署在不同可用区,通过节点池扩展节点。
4.工作负载创建时设置实例数需大于2个。
5.工作负载实例采用默认部署,即无规则调度到集群中的不同节点上。
操作步骤
为了便于描述,假设集群中有demo-92634、demo-01208、demo-30509和demo-27003四个节点,其中demo-92634、demo-01208两个节点在同一可用区1、demo-30509在可用区2、demo-27003在可用区3。
步骤 1 登录CCE控制台,在左侧导航栏中选择“工作负载 > 无状态负载 Deployment”,单击“创建无状态工作负载”。
步骤 2 设置工作负载基本信息,未涉及参数均采用默认值。
- 工作负载名称:新建工作负载的名称,此处设置为nginx-demo。
- 实例数量:设置为1个。
步骤 3 单击“下一步”,单击“添加容器”,选择“开源镜像中心”中的nginx镜像,单击“确定”。
步骤 4 其他参数保持默认,依次单击“下一步”,单击“创建”,完成工作负载的创建。
步骤 5 在工作负载列表中,单击已创建工作负载的名称,本示例为nginx-demo。
步骤 6 在“实例列表”中,单击实例所在节点的IP。在节点管理页面,可看到实例被调度在可用区1。
步骤 7 在“调度策略”页签中,单击“自定义调度策略”,单击“工作负载反亲和性 > 尽量满足 > 添加规则”。
创建一条对可用区反亲和尽量满足的规则,参数设置如下。更多内容请参见Affinity and anti-affinity。
- 权重:权重值越高会被优先调度,本示例设置为50。
- 拓扑域:即topologyKey,包含默认和自定义标签,用于指定调度时的作用域。本示例设置为failure-domain.beta.kubernetes.io/zone。
- 标签名:对应工作负载的标签,可以使用默认标签app或自定义标签。本示例中设置为app。
- 操作符:当前支持设置In、NotIn、Exists和DoesNotExist四种匹配关系。In和NotIn操作符可以添加单个值或多个value值;Exists和DoesNotExist判断某个label是否存在,不需设置value值。本示例设置为in。
- 标签值:本示例设置为nginx-demo。
步骤 8 参照步骤7再创建一条对本身工作负载反亲和尽量满足的规则,参数设置如下。
- 权重:设置为50。
- 拓扑域:设置为kubernetes.io/hostname。
- 标签名:设置为app。
- 操作符:设置为in。
- 标签值:设置为nginx-demo。
步骤 9 设置完成后,单击“确定”。
在调度策略列表中,可查看到已添加的策略。
步骤 10 在“伸缩”页签,单击手动伸缩中的,增加1个实例,可以发现工作负载实例优先调度到可用区3。
步骤 11 在“伸缩”页签,单击手动伸缩中的,再添加1个实例数,可以发现工作负载实例优先调度到可用区2。
步骤 12 在“伸缩”页签,单击手动伸缩中的,再添加1个实例数,可以发现工作负载实例优先调度到可用区1中剩余的集群节点。