AKS节点池如何在多可用区部署下配置多故障域与更新域
跨可用区AKS节点池VMSS显示单故障域的核心原因
- Azure平台对VM规模集的故障域计数逻辑,会根据是否跨可用区部署动态调整,这也是和官方文档描述存在感知偏差的核心来源
- 当VMSS配置了跨可用区分布的拓扑时,平台对外暴露的故障域计数是跨可用区全局维度的逻辑值:每个可用区在全局层面被映射为1个独立故障域,门户上看到的“仅1个故障域”的配置值,是全局维度的映射结果,不代表单可用区内部的物理故障域数量
- 官方文档提到的“VMSS支持5个故障域/更新域”的能力,仅针对单可用区内部署的VMSS场景设计:这类不跨区的规模集,会直接把单区内部的5个物理故障域/更新域的计数暴露在配置属性上,自然可以看到5个域的配置值
- 跨区VMSS的配置页没有故障域数量的修改入口,本质是因为这个配置值是平台全局逻辑映射的结果,不属于用户可自定义的配置项,并非部署流程出现了配置错误
3个可用区下实现单区内5个故障域/更新域的配置方式
- 首先明确核心机制:跨区部署的VMSS本身已经默认内置了单可用区内最多5个物理故障域的分散调度能力,不需要手动修改故障域相关配置,只要满足两个条件即可达到目标效果
- 配置项1:创建节点池时完整指定要覆盖的3个可用区,对应节点池参数为
zones: ["1", "2", "3"],不要出现可用区遗漏 - 配置项2:每个可用区内的节点数量满足平台分散调度的最低阈值。单可用区内如果节点数少于5个,平台会按照节点数量匹配对应数量的物理故障域做分散部署;当单可用区节点数≥5时,平台会自动把节点均匀铺到该可用区对应的全部5个物理故障域/更新域上,不会出现节点集中在单个故障域的情况
- 效果验证:无需参考门户上VMSS属性页的全局故障域显示值,直接查询节点的实际调度标签即可确认分布效果,可执行命令:
kubectl get nodes -L topology.kubernetes.io/zone -L topology.microsoft.com/failure-domain,返回结果中可看到三个可用区下的节点,分别分布在对应区内的5个故障域上 - 常见避坑提示:
- 不要为了追求门户上显示的5个故障域配置,把节点池改成单可用区部署,会直接丧失跨可用区的高可用容灾能力
- 不要改用可用性集部署节点池,可用性集本身不支持跨可用区挂载,会导致跨区配置完全失效
内容的提问来源于stack exchange,提问作者misfit
相关产品推荐
相关产品推荐

