我们如何确保 AWS EKS 上的节点均匀分布在一个区域的可用区中?
How can we ensure that the nodes on AWS EKS are EVENLY spread across a region's availability zones?
从 AWS 官方文档中,我得到以下信息:
AWS treats Regions and Availability Zones as failure domains that should be accounted for when running infrastructure that needs to be highly available.
Each Region where your application is deployed should run in multiple Availability Zones (AZ) to ensure routing traffic across two or more failure domains.
但并没有说明节点均匀分布在一个区域的AZ上。也就是说如果你在一个地域有3个可用区,部署3个节点,每个节点都会部署到不同的可用区,保证高可用。
是否由 AWS EKS 自动管理,即节点均匀分布在可用区中。或者是否有我们可以设置的配置来确保这一点?
EKS 无法跨 AZ 分布节点。 EKS 不太关心节点或节点组。哎呀,它甚至不知道要安排什么工作负载。 EKS只是提供K8s控制平面。
相反,您需要在属于集群的每个 AZ 中构建一个节点组。这些可以是大小为 0 的节点组。然后为您的 pods 或使用 topologySpreadConstraints
使用适当的 affinity/anti-affinity 规则,您可以帮助确保 pods 在不同 AZ 的节点之间均匀安排。
让cluster-autoscaler
处理这些节点组中节点的添加和删除(尤其是在使用 HPA 时)
根据您创建 EKS 集群的方式,将决定您创建节点组的方式。 eksctl
例如,您可以在 ClusterConfig
文件中定义所有这些。
从 AWS 官方文档中,我得到以下信息:
AWS treats Regions and Availability Zones as failure domains that should be accounted for when running infrastructure that needs to be highly available.
Each Region where your application is deployed should run in multiple Availability Zones (AZ) to ensure routing traffic across two or more failure domains.
但并没有说明节点均匀分布在一个区域的AZ上。也就是说如果你在一个地域有3个可用区,部署3个节点,每个节点都会部署到不同的可用区,保证高可用。
是否由 AWS EKS 自动管理,即节点均匀分布在可用区中。或者是否有我们可以设置的配置来确保这一点?
EKS 无法跨 AZ 分布节点。 EKS 不太关心节点或节点组。哎呀,它甚至不知道要安排什么工作负载。 EKS只是提供K8s控制平面。
相反,您需要在属于集群的每个 AZ 中构建一个节点组。这些可以是大小为 0 的节点组。然后为您的 pods 或使用 topologySpreadConstraints
使用适当的 affinity/anti-affinity 规则,您可以帮助确保 pods 在不同 AZ 的节点之间均匀安排。
让cluster-autoscaler
处理这些节点组中节点的添加和删除(尤其是在使用 HPA 时)
根据您创建 EKS 集群的方式,将决定您创建节点组的方式。 eksctl
例如,您可以在 ClusterConfig
文件中定义所有这些。