在将我的EKS集群升级到1.22 (第一次升级控制平面,然后是节点)之后,托管组节点的更新成功地完成了,但是过了一段时间,EKS决定提供一个新的节点,无论出于什么原因使用旧的kubernetes版本。
如果我运行kubectl get nodes,您可以看到其中一个节点正在运行1.21
NAME STATUS ROLES AGE VERSION
ip-10-13-10-186.ap-northeast-1.compute.internal Ready <none> 4h39m v1.22.12-eks-ba74326
ip-10-13-26-91.ap-northeast-1.compute.internal Ready <none> 3h3m v1.21.14-eks-ba74326
ip-10-13-40-42.ap-northeast-1.compute.internal Ready <none> 4h33m v1.22.12-eks-ba74326如果我运行并检查我的托管组,我会发现它实际上是1.22版本
eksctl get nodegroup default-20220901053307980400000010 --cluster mycluster-dev -o yaml
- AutoScalingGroupName: eks-default-20220901053307980400000010-f8c17xc4-f750-d608-d166-113925c1g9c5
Cluster: mycluster-dev
CreationTime: "2022-09-01T05:33:11.484Z"
DesiredCapacity: 3
ImageID: AL2_x86_64
InstanceType: t3.large
MaxSize: 3
MinSize: 3
Name: default-20220901053307980400000010
NodeInstanceRoleARN: arn:aws:iam::XXXXXXXXXXX:role/eks_node_group_dev_role-20220901052135822100000004
StackName: ""
Status: ACTIVE
Type: managed
Version: "1.22"我还可以在AWS控制台中看到版本为1.22。
我再次尝试运行升级命令,但没有结果。
我还尝试使用以前部署的集群手动从托管组中删除一个节点,但是没有重新部署一个新节点,而是只剩下两个节点。
我的问题是,我怎样才能强制替换这个节点,希望它能以正确的kubelet版本启动?
发布于 2022-09-01 13:32:58
诚恳地说,有时我会经历EKS的一些不合逻辑的行为,我对你的情况并不感到奇怪。
在我看来,您应该在自动标度组级别应用更改,只需定位与目标节点组关联的自动标号组,然后手动从它中删除节点,方法是先分离该节点,然后终止它。根据我的经验,应用于节点组的更改有时需要一些时间才能在自动标度组级别上得到反映,而且我认为,有时,两者之间的交互会受到这种行为的影响。
在分离节点之前,请确保最小和所需的容量设置为3,当分离它时,AWS将询问您是否要替换该节点,然后说是。
检查启动模板版本
由于我不清楚是通过节点组设置实例类型,还是通过附加到它的启动模板设置实例类型,那么正如您在注释中确认的(启动模板),在这种情况下,您应该验证您总是使用它的最新版本来使相关更改得到反映。
https://stackoverflow.com/questions/73569120
复制相似问题