首先,停止所有正在運行的Kubernetes組件服務,避免卸載過程中出現文件占用或進程沖突:
sudo systemctl stop kubelet
sudo systemctl stop kube-apiserver
sudo systemctl stop kube-controller-manager
sudo systemctl stop kube-scheduler
sudo systemctl stop kube-proxy
說明:kubelet是Kubernetes節點代理,負責與Master節點通信;其他服務為控制平面組件,需全部停止。
使用kubeadm reset命令清理Kubernetes集群的配置和數據(如etcd數據庫、證書、Pod數據等),恢復節點到未加入集群的狀態:
sudo kubeadm reset --force
說明:--force參數用于強制執行重置(若集群處于異常狀態),避免交互式確認。
通過CentOS的包管理器yum(或dnf,CentOS 8+)卸載Kubernetes核心組件及依賴:
sudo yum remove -y kubeadm kubelet kubectl kubernetes-cni kube*
說明:kubeadm用于集群部署,kubelet為節點代理,kubectl為命令行工具,kubernetes-cni為容器網絡接口驅動;kube*會匹配并卸載所有以"kube"開頭的軟件包。
徹底清除Kubernetes的配置文件、證書及數據存儲目錄,防止殘留信息影響后續重新部署:
sudo rm -rf /etc/kubernetes/ # 控制平面配置(如kube-apiserver.yaml、kube-controller-manager.yaml)
sudo rm -rf /var/lib/etcd/ # etcd數據庫(存儲集群狀態,默認路徑)
sudo rm -rf /var/lib/kubelet/ # kubelet數據(如Pod卷、鏡像緩存)
sudo rm -rf $HOME/.kube/ # 用戶級kubeconfig文件(默認路徑)
說明:/etc/kubernetes/包含集群配置,/var/lib/etcd/存儲集群狀態,/var/lib/kubelet/存儲節點數據,~/.kube/存儲用戶訪問集群的憑證。
Kubernetes依賴CNI(容器網絡接口)實現Pod間網絡通信,需刪除CNI配置文件及插件目錄:
sudo rm -rf /etc/cni/net.d/ # CNI網絡配置文件(如flannel、calico的配置)
sudo rm -rf /opt/cni/bin/ # CNI插件二進制文件(如flannel、calico的可執行文件)
說明:若使用其他CNI插件(如Calico、Cilium),需確保刪除對應插件的數據目錄(如/var/lib/calico/)。
若不再需要容器運行時(Kubernetes依賴容器運行時啟動Pod),可進一步卸載:
sudo systemctl stop docker
sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo rm -rf /var/lib/docker # Docker數據目錄(存儲鏡像、容器、卷)
sudo systemctl stop containerd
sudo yum remove -y containerd
sudo rm -rf /var/lib/containerd # Containerd數據目錄
說明:Docker是CentOS上常用的容器運行時,若使用Containerd(Kubernetes原生運行時),需替換對應命令。
Kubernetes會修改iptables規則以實現網絡轉發,卸載后需清理殘留規則,避免影響系統網絡:
sudo iptables -F && sudo iptables -X && sudo iptables -t nat -F && sudo iptables -t nat -X && sudo iptables -t mangle -F && sudo iptables -t mangle -X && sudo iptables -P FORWARD ACCEPT
說明:-F清空規則,-X刪除自定義鏈,-P FORWARD ACCEPT設置FORWARD鏈默認策略為ACCEPT(避免網絡中斷)。
重啟系統以應用所有更改,確保系統恢復到干凈狀態:
sudo reboot
注意事項:
kubeadm部署,kubeadm reset會自動清理大部分集群數據;journalctl -xe)確認無殘留進程。