K8s集群中,Worker 节点误执行了 kubeadm init
K8s集群中,Worker 节点误执行了 kubeadm init
文章目录
- K8s集群中,Worker 节点误执行了 kubeadm init
- 注意事项
- 以下是解决方案的详细步骤:
Worker 节点误执行了 kubeadm init,需要进行清理和重新加入集群。
注意事项
- 确保网络插件配置与 --pod-network-cidr 参数匹配,否则会导致 Worker 节点无法加入。
- 如果 Worker 节点误操作后仍报错,可以尝试重启服务:
sudo systemctl restart kubelet
- 在执行清理操作前,确保当前节点没有任何重要的应用或数据,以免误删。
- 按照步骤操作后,误执行初始化的 Worker 节点应该可以恢复并正常加入集群。
以下是解决方案的详细步骤:
- 清理错误配置
在误操作的 Worker 节点上执行以下命令清理集群相关的残留数据:
sudo kubeadm reset -f
作用:
清理初始化过程中生成的配置文件、证书和数据目录。
会移除 /etc/kubernetes 下的所有内容。
注意:此命令不会删除网络插件相关的配置文件,如果需要彻底清理,请参考下面的步骤。
- 清理容器运行时相关数据
- 如果使用的是 containerd,可以清理容器相关的内容:
sudo systemctl stop containerd
sudo rm -rf /var/lib/containerd/*
sudo rm -rf /data/containerd/*
sudo systemctl start containerd
- 对于其他容器运行时(如 Docker),可以参考以下命令:
sudo systemctl stop docker
sudo rm -rf /var/lib/docker/*
sudo systemctl start docker
- 移除 CNI 网络配置(可选)
如果节点已经部署了网络插件(例如 Flannel 或 Calico),可能会遗留网络配置,需手动清理。
sudo rm -rf /etc/cni/net.d/*
sudo rm -rf /var/lib/cni/
sudo rm -rf /var/run/calico/
- 确保网络和服务正常(可选)
# 检查是否有多余的 IP 地址或规则残留:
ip addr show
iptables -L -n -v
# 清理可能遗留的网络规则:
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -X
sudo ip link delete cni0
sudo ip link delete flannel.1
- 将 Worker 节点重新加入集群
重新加入集群需要从 Master 节点获取 kubeadm join 命令。可以在 Master 节点执行以下命令获取新的 kubeadm join 命令:
sudo kubeadm token create --print-join-command
# 输出类似如下:
kubeadm join 172.19.0.81:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 在 Worker 节点上执行上述命令即可重新加入集群。
- 验证节点状态
在 Master 节点上检查 Worker 节点状态:
kubectl get nodes
如果节点状态为 Ready,说明已成功加入集群。
如果状态为 NotReady,检查网络插件是否已部署且正常运行:
kubectl get pods -n kube-system