问题场景:
之前join过一次,取消了,再次加入提示:
[root@node1 ~]# kubeadm join 192.168.1.100:6443 --node-name=node1 -v=2 --token xjmviq.6n3egsksc2mkozdf --discovery-token-ca-cert-hash sha256:5dbadae0514d1710728ba7121bd6cd1e15bab032f1ddf1df807aff6d93e58372
I0421 17:29:11.745836 9166 initconfiguration.go:103] detected and using CRI socket: /var/run/dockershim.sock
[preflight] Running pre-flight checks
...其他输出
I0421 17:29:11.976499 9166 checks.go:432] validating if the connectivity type is via proxy or direct
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
[ERROR Port-10250]: Port 10250 is in use
[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
问题解决:
- /etc/kubernetes/kubelet.conf 文件已经存在 —— 这通常意味着这个节点之前可能已经被添加到了另一个 Kubernetes 集群中,或者尝试加入集群的操作被中断,留下了配置文件,
删除即可
。 - /etc/kubernetes/bootstrap-kubelet.conf —— 文件也已经存在。这个文件是节点在初始连接集群时用于自举的配置文件。
- 端口 10250 正在被使用 —— 在 Kubernetes 中,这个端口通常被 kubelet 使用来与 API 服务器通信。如果它已经被其他进程占用,kubelet 将无法启动。
删除/var/lib/kubelet/*和/etc/kubernetes
即可。 - /etc/kubernetes/pki/ca.crt —— 文件已经存在。这表示可能有一个现有的 Kubernetes 集群的证书和密钥信息,
删除即可
。
可以一键删除重新开始:
[root@192 ~]# kubeadm reset
也可以按照提示自己慢慢删除:
[root@node1 ~]# rm -rf /etc/kubernetes/kubelet.conf && rm -rf /etc/kubernetes/pki/ca.crt && sudo systemctl stop kubelet && sudo rm -rf /var/lib/kubelet/* && sudo systemctl start kubelet