Kubernetes Master Worker 节点 Kubeadm 加入问题
Posted
技术标签:
【中文标题】Kubernetes Master Worker 节点 Kubeadm 加入问题【英文标题】:Kubernetes Master Worker Node Kubeadm Join issue 【发布时间】:2019-09-10 01:37:13 【问题描述】:我正在使用 Kubeadm 在我的笔记本电脑上的 Oracle Virtualbox 上安装 Kubernetes。 一切正常,直到我在 Kuberenes Worker 节点上运行此命令以加入主节点 运行后出现错误
sudo kubeadm join 192.168.56.100:6443 --token 0i2osm.vsp2mk63v1ypeyjf --discovery-token-ca-cert-hash sha256:18511321fcc4b622628dd1ad2f56dbdd319bf024740d58127818720828cc7bf0
错误
[preflight] Running pre-flight checks
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR DirAvailable--etc-kubernetes-manifests]: /etc/kubernetes/manifests is not empty
[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=...`
我尝试手动删除文件并再次运行该命令,但它没有解决端口问题。 并且每当我停止在 10250 端口上运行的 kubectl 然后运行命令时,它会给出错误“需要启动 kubectl,当我启动 kubectl 时,它会给出端口 10250 正在使用中的错误”
它是一种鸡和蛋的东西
对我如何解决它有什么看法?
【问题讨论】:
【参考方案1】:你应该先试试
#kubeadm reset
因为你已经有 kubernetes,所以会出错。
【讨论】:
你应该删除 iptabales 不需要删除 iptables 尝试 Kubeadm reset 并生成新的令牌和发现证书,它工作了感谢您的帮助!【参考方案2】:关于kubeadm reset
:
1 ) 如描述here:
The "reset" command executes the following phases:
preflight Run reset pre-flight checks
update-cluster-status Remove this node from the ClusterStatus object.
remove-etcd-member Remove a local etcd member.
cleanup-node Run cleanup node.
所以我建议先运行preflight
阶段(通过使用--skip-phases
标志),然后再一起执行所有阶段。
2 ) 当您执行cleanup-node
阶段时,您可以看到正在记录以下步骤:
.
.
[reset] Stopping the kubelet service
[reset] Unmounting mounted directories in "/var/lib/kubelet"
[reset] Deleting contents of config directories: [
/etc/kubernetes/manifests
/etc/kubernetes/pki
]
[reset] Deleting files: [
/etc/kubernetes/admin.conf
/etc/kubernetes/kubelet.conf
/etc/kubernetes/bootstrap-kubelet.conf
/etc/kubernetes/controller-manager.conf
/etc/kubernetes/scheduler.conf
]
.
.
让我们回顾一下[reset]
条目,看看它们如何解决您提到的 4 个错误:
A ) 第一个 [reset]
条目将修复 Port 10250 is in use
问题(kubelet 正在侦听此端口)。
B ) 第四个[reset]
条目将修复/etc/kubernetes/manifests is not empty
和/etc/kubernetes/kubelet.conf already exists
的两个错误。
C ) 我们留下了/etc/kubernetes/pki/ca.crt already exists
错误。
我认为删除/etc/kubernetes/pki
的第三个[reset]
条目应该解决这个问题。
但是,就我而言,当我以 5 的详细级别运行 kubeadm join
(通过附加 --v=5
标志)时,我遇到了以下错误:
I0929 ... checks.go:432] validating if ...
[preflight] Some fatal errors occurred:
[ERROR FileAvailable-etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
所以我不得不手动删除/etc/kubernetes/pki
文件夹,然后kubeadm join
再次成功。
【讨论】:
感谢您如此详细的解释。有没有办法使用预先存在的 kubelet 配置和其他一切将节点重新加入到它的主节点?或者我们是否需要始终使用 kubeadm reset 来加入它?【参考方案3】:别跑
kubeadm init (do not do this)
在加入之前在工作节点上。这仅在您的主节点上运行。这样做可能是您已经拥有这些文件的原因,而您不应该这样做。正如亚辛所说:
kubeadm reset
【讨论】:
以上是关于Kubernetes Master Worker 节点 Kubeadm 加入问题的主要内容,如果未能解决你的问题,请参考以下文章
《Kurnetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.12单master集群》
[云原生专题-25]:K8S - Kubernetes(K8S)Master集群构建与安装过程详细解读 - worker节点的安装与加入
Linux下部署Kubernetes+KubesphereKubernetes基础