组件高可用是指集群中的组件(如 CBS、CoreDNS 等)在部署时,其工作负载的 Pod 实例分布在两个及以上可用区(Availability Zone)的节点上,从而在单个可用区发生故障时仍能保证组件服务的连续可用。
功能特性
腾讯云容器服务组件管理提供组件高可用配置能力,支持对满足条件的组件一键开启或关闭高可用。
开启高可用:当集群已开启高可用时,支持对未处于高可用状态的组件点击开启高可用,将组件工作负载调整为跨可用区高可用部署模式。
关闭高可用:当集群已关闭高可用时,支持对高可用状态的组件点击关闭高可用,解除组件工作负载的高可用部署约束。
组件高可用状态
系统通过查询组件工作负载的 Pod 在节点上的可用区分布情况,来判断组件当前的高可用状态:
状态 | 说明 |
高可用 | 组件所有 Deployment 和 Statefulset 类型的工作负载的 Running Pod 分布于 ≥2 个可用区。 |
非高可用 | 存在至少一个 Deployment 或 Statefulset 类型的工作负载,其所有 Running Pod 均分布在同一个可用区内。 |
支持高可用的组件列表
组件名称 | 版本要求 |
cbs | 1.1.14 及以上版本 |
eniipamd | 3.10.1 及以上版本 |
coredns | 无版本限制 |
kubernetes-proxy | 无版本限制 |
前置限制条件
集群高可用属性:开启组件高可用前,需确保集群已开启高可用属性;关闭组件高可用前,需确保集群已关闭高可用属性。
多可用区节点:集群中需存在两个及以上可用区的 Ready 状态节点,否则无法开启组件高可用。
组件状态:组件需处于正常运行状态,不能处于更新中或删除中状态。
版本限制:组件需满足最低版本要求,不满足时需先升级组件版本。
控制台操作指南
开启组件高可用
前置条件:集群已开启高可用属性,且集群节点分布在 2 个及以上可用区。
操作步骤:
1. 登录 腾讯云容器服务控制台。
2. 选择集群,进入集群基本信息页面,确认集群已开启高可用属性(可在基本信息页面查看和修改)。
3. 在左侧导航栏中,选择运维中心 > 组件管理。
4. 在组件管理列表中,查看目标组件是否处于非高可用状态。
5. 在目标组件的操作列中,单击开启高可用。
6. 等待组件更新完成,观察是否高可用列变为“是”。
关闭组件高可用
前置条件:集群已关闭高可用属性。
操作步骤:
1. 登录 腾讯云容器服务控制台。
2. 进入目标集群基本信息页面,确认集群已关闭高可用属性(可在基本信息页面查看和修改)。
3. 在左侧导航栏中,选择运维中心 > 组件管理。
4. 在目标组件的操作列中,单击关闭高可用。
5. 等待组件更新完成。
注意:
关闭组件高可用后,组件更新不再强制跨可用区部署,组件最终的部署状态取决于 Kubernetes 调度器的调度策略,可能仍处于高可用或非高可用状态。
注意事项
集群中组件高可用状态趋向于集群高可用状态。当集群为高可用时,组件更新后将自动尝试以高可用模式部署;当集群为非高可用时,组件更新时不再强制高可用部署。
对于版本不满足要求的组件,需先将组件升级到支持高可用的版本,再执行开启高可用操作。
开启高可用会修改组件工作负载的 TopologySpreadConstraints 拓扑分布约束配置,将 Pod 分散调度到不同可用区。
常见问题
点击开启高可用后,组件更新完成但状态为什么仍显示非高可用?
这通常是由于集群 Kubernetes 版本过低,调度器不支持组件高可用调度特性。建议将集群 Kubernetes 版本升级至以下最低版本,然后重新执行开启高可用操作即可:
Kubernetes 小版本 | 最低支持版本 |
v1.28及以上 | 所有版本均支持 |
v1.26 | v1.26.1-tke.25 |
v1.24 | v1.24.4-tke.36 |
v1.22 | v1.22.5-tke.46 |
v1.20 | v1.20.6-tke.64 |
v1.18 | v1.18.4-tke.60 |
点击开启高可用后,组件更新失败如何处理?