是否有可能在一个区域内创建eks集群(例如ap-south-1)和从另一个区域(例如,ap-north-east-2)。如果是,谁能告诉我怎么做?
ap-south-1
ap-north-east-2
vs3odd8k1#
这是不可能的,即使是使用自管理节点组,因为远程区域中的节点无法进行身份验证以加入群集。此身份验证由名为aws-iam-authenticator的组件执行,该组件是EKS为您运行的Kubernetes主组件之一。当节点尝试加入集群时,aws-iam-authenticator尝试将节点验证的IAM角色Map到Kubernetes用户名system:node:<nodename>。<nodename>必须精确匹配节点的名称,即其私有EC2 DNS名称。为了生成此用户名,aws-iam-authenticator使用EC2 API查找节点的私有DNS名称,但它在与EKS集群相同的区域中执行此操作,因此对于试图从另一个区域加入的节点,它将失败。可以在aws-iam-authenticator中修补此行为,但由于AWS将此组件作为EKS主组件的一部分为您运行,因此您无法运行修补版本。当然,您可以通过部署自己的集群来实现多地域K8s集群,而无需使用EKS。然而,远距离节点存在风险。如果两个区域失去彼此的网络连接,或者延迟增加超过一定量,则涉及远处区域中的节点的控制平面操作将失败,并且主设备将看到那些节点丢失。除此之外,这意味着在远程节点上运行的pod可以在其他地方重新调度,尽管实际上仍然在远程区域中运行。请注意,即使两个区域仍然连接到Internet的其他部分,区域之间的连接也可能丢失或受损。您应该在第二个区域部署另一个集群。SIG Multicluster下有各种解决方案用于联合集群,允许它们一起管理。
aws-iam-authenticator
system:node:<nodename>
<nodename>
2ic8powd2#
不是,是因为你没有能力改变主节点上的任何东西。
Amazon EKS是完全托管的Kubernetes服务,您需要在EC2示例上创建自己的集群。
2条答案
按热度按时间vs3odd8k1#
这是不可能的,即使是使用自管理节点组,因为远程区域中的节点无法进行身份验证以加入群集。
此身份验证由名为
aws-iam-authenticator
的组件执行,该组件是EKS为您运行的Kubernetes主组件之一。当节点尝试加入集群时,aws-iam-authenticator
尝试将节点验证的IAM角色Map到Kubernetes用户名system:node:<nodename>
。<nodename>
必须精确匹配节点的名称,即其私有EC2 DNS名称。为了生成此用户名,aws-iam-authenticator
使用EC2 API查找节点的私有DNS名称,但它在与EKS集群相同的区域中执行此操作,因此对于试图从另一个区域加入的节点,它将失败。可以在
aws-iam-authenticator
中修补此行为,但由于AWS将此组件作为EKS主组件的一部分为您运行,因此您无法运行修补版本。当然,您可以通过部署自己的集群来实现多地域K8s集群,而无需使用EKS。然而,远距离节点存在风险。如果两个区域失去彼此的网络连接,或者延迟增加超过一定量,则涉及远处区域中的节点的控制平面操作将失败,并且主设备将看到那些节点丢失。除此之外,这意味着在远程节点上运行的pod可以在其他地方重新调度,尽管实际上仍然在远程区域中运行。请注意,即使两个区域仍然连接到Internet的其他部分,区域之间的连接也可能丢失或受损。
您应该在第二个区域部署另一个集群。SIG Multicluster下有各种解决方案用于联合集群,允许它们一起管理。
2ic8powd2#
不是,是因为你没有能力改变主节点上的任何东西。
Amazon EKS是完全托管的Kubernetes服务,您需要在EC2示例上创建自己的集群。