-
清理控制平面:首先,清理掉控制平面组件,包括etcd、kube-apiserver、kube-controller-manager和kube-scheduler。
bashCopy code
$ sudo systemctl stop kubelet $ sudo kubeadm reset -f $ sudo rm -rf /etc/kubernetes/ $ sudo rm -rf $HOME/.kube/
-
清理工作节点:接下来,清理工作节点上的Kubernetes组件和配置。
bashCopy code
$ sudo systemctl stop kubelet $ sudo kubeadm reset -f $ sudo rm -rf /etc/kubernetes/ $ sudo rm -rf /var/lib/kubelet/ $ sudo rm -rf /var/lib/cni/
-
重新初始化:执行kubeadm初始化命令重新初始化集群。根据你的需求和环境设置,可以使用不同的参数选项。
bashCopy code
$ sudo kubeadm init <options>
这将初始化控制平面组件并生成初始化令牌(token)。注意保存好生成的连接信息和令牌。
-
配置kubectl:配置kubectl命令行工具以与重新初始化的集群进行通信。
bashCopy code
$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
安装网络插件:根据你的网络插件选择,安装和配置网络插件。常用的网络插件包括Calico、Flannel和Cilium等。
-
加入工作节点:将工作节点加入到重新初始化的集群中。使用之前生成的连接信息和令牌执行加入操作。
bashCopy code
$ sudo kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <ca-cert-hash>
其中,
<master-node-ip>
和<master-node-port>
是刚刚重新初始化的控制平面节点的IP地址和端口,<token>
和<ca-cert-hash>
是初始化令牌和CA证书哈希值。 -
验证集群状态:等待工作节点加入集群,然后使用以下命令验证集群状态。
bashCopy code
$ kubectl get nodes $ kubectl get pods --all-namespaces