如何从EKS节点组中删除特定节点(none managed eksctl)

0

【以下的问题经过翻译处理】 我使用eksctl创建了一个小型的EKS集群。它由2个节点组(非托管)组成。

第一个节点组运行管理应用程序,目前只有一个节点,第二个节点组运行“worker” pod,有3个节点。

我收到了一个事件通知,称管理节点组中的单个节点所在的EC2机器将因维护而被计划关闭。我的计划是将该节点组扩展到2个节点,然后使用kubectl drain来驱逐运行的应用程序,以便将其移动到新的节点上。到目前为止一切都好。

我的问题是,在EC2关闭原始节点之前(并且可能启动一个替代节点),如何删除原始节点?在使用eksctl将节点组缩小回单个节点时,是否有办法指定特定的节点?或者它是否足够智能,可以选择已经被驱逐/禁止的节点?

profile picture
专家
已提问 1 年前244 查看次数
1 回答
0

【以下的回答经过翻译处理】 我理解你的EKS节点中的一个节点即将进行维护。目前,你有第二个节点组,运行着3个“worker” pod。你想将该节点组缩小为2个节点,并且希望被计划维护的节点在缩小过程中被移除。你的工作负载已经转移到了其他两个节点上。

以下是我在测试环境中测试过的一些步骤,可以实现这个目标。

你可能已经知道,你的节点组有一个自动伸缩组,它会负责启动/终止节点,并保持节点数量与你的自动伸缩期望容量一致。

在EKS上进行驱逐: $ kubectl get nodes

$ kubectl cordon <节点名称>

$ kubectl drain <节点名称> --ignore-daemonsets

要终止实例并减少自动伸缩组的大小:

$ aws autoscaling terminate-instance-in-auto-scaling-group --instance-id <实例ID> --should-decrement-desired-capacity --region <区域>

参考:https://docs.aws.amazon.com/cli/latest/reference/autoscaling/terminate-instance-in-auto-scaling-group.html

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则