我在aws k8s实例上创建了一个由k0s安装的ec2。为了使新集群更快地交付,我尝试为它创建一个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起作用的工作
简短回答
--extra-args安装节点详情:1
在kubernete集群中,kubelet扮演节点代理节点。它会告诉kube-api“嘿,我在这里,我叫XXX”。
节点的名称是其主机名,创建后不能更改。它可以由--hostname-override设置。
如果不更改节点名,kube-api将尝试使用主机名,然后得到由old-node-name not引起的错误。
详情:2
对于k0s,它将kubelet‘KUBECONFIG放在/var/lib/k0s/kubelet.conf中,有一个kubelet服务器位置
server: https://172.31.18.9:6443为了连接新的kube-api位置,请更新它。
发布于 2021-06-10 13:14:39
你查过库贝莱原木了吗?很可能是证书的问题。您不能只将一个现有节点变成ami,并希望它能够工作,因为证书是为特定IP签名的。
查看github上的awslabs/amazon ami回购。您可以查看aws是如何做其k8s ami的。
repo中有一个文件/引导.文件,用于引导实例。它执行所有特定于实例的事情,包括获得证书。
如果您想“使交付新集群更快”,我建议使用所有依赖关系创建一个ami,但不需要实际的k8s启动。在从ami启动实例之后安装k8s (或在您的情况下是k0s ),而不是在此之前。(或者找出如何重新生成特定于节点的证书和信任。)
https://stackoverflow.com/questions/67918614
复制相似问题