我在 aws ec2 实例上创建了一个由 k0s 安装的 k8s。为了更快地交付新集群,我尝试为它制作一个 AMI。
但是,我启动了一个新的ec2实例,内部IP改变了,节点变成了NotReady
ubuntu@ip-172-31-26-46:~$ k get node
NAME STATUS ROLES AGE VERSION
ip-172-31-18-145 NotReady <none> 95m v1.21.1-k0s1
ubuntu@ip-172-31-26-46:~$
是否可以重新配置它?
解决方法
我找到了使 AWS AMI 正常工作的解决方法
简短的回答
- 使用 kubelet 安装节点
--extra-args
- 更新 kube-api 到新 IP 并重启 kubelet
详情 :: 1
在 kubernete 集群中,kubelet
播放节点代理节点。它会告诉kube-api
“嘿,我在这里,我的名字是 XXX”。
节点的名称是它的主机名,创建后不能更改。它可以由 设置--hostname-override
。
如果您不更改节点名称,kube-api
将尝试使用主机名然后出现old-node-name
未找到导致的错误。
详情 :: 2
到k0s,把kubelet'KUBECONFIG放在里面/var/lib/k0s/kubelet.conf
,里面有一个kubelet api server location
server: https://172.31.18.9:6443
为了连接一个新的 kube-api 位置,请更新它