【发布时间】:2022-06-19 02:22:36
【问题描述】:
在 AWS EKS 节点组滚动升级后,我无法确保我的 pod 重新连接到它们的 PV。问题是节点本身从 AZ us-west-2b 移动到 us-west-2c,但 PV 仍保留在 us-west-2b。
节点上的标签是topology.kubernetes.io/zone=us-west-2c,而PV上的标签仍然是topology.kubernetes.io/zone=us-west-2b,因此升级完成后,旋转的pod上会显示卷关联性检查警告:
0/1 nodes are available: 1 node(s) had volume node affinity conflict.
升级受管节点组中的节点时,升级后的节点 在与正在启动的相同可用区中启动 升级了。
但情况似乎并非如此。有没有办法始终强制将节点创建到升级前它们所在的同一可用区?
注意:这是一个单节点 AWS EKS 集群(最大值设置为 3),但我认为这无关紧要。
【问题讨论】:
-
通常每个 AZ 应该有一个节点组,而不是一组有多个 AZ 来处理 PV。我相信 cluster-autoscaler 文档状态类似,但这里是 EKS 最佳实践指南的相关部分:aws.github.io/aws-eks-best-practices/cluster-autoscaling/…
-
要点是这是 AWS 自动缩放组的限制。如果您有一个多 AZ 组,则不能请求特定 AZ 中的实例(您需要卷附件)
-
啊哈,谢谢@jordanm - 所以在 EKS 节点组创建期间,将节点组限制在单个 AZ 是确保后续升级永远不会在单个 AZ(以及 PV 和节点)之外创建节点的解决方案然后留在同一个AZ)?
-
是的,这应该可以解决它尝试用错误 AZ 的实例替换的问题,但是如果您还使用集群自动缩放器,请注意
balance-similar-node-groups=true配置设置也是必需的按预期工作。
标签: amazon-web-services amazon-eks