在卸載前,需先停止所有Kubernetes相關服務,避免進程殘留。執行以下命令:
sudo systemctl stop kubelet
sudo systemctl disable kubelet # 禁用開機自啟(可選但推薦)
若使用Docker作為容器運行時,還需停止Docker服務:
sudo systemctl stop docker
使用CentOS的包管理器yum
(或CentOS 8+的dnf
)卸載Kubernetes核心組件及依賴:
sudo yum remove -y kubeadm kubelet kubectl kubernetes-cni kube* # CentOS 7
# 或(CentOS 8+)
sudo dnf remove -y kubeadm kubelet kubectl kubernetes-cni kube*
kube*
通配符可確保卸載所有以"kube"開頭的軟件包,避免遺漏。
Kubernetes的配置文件和數據存儲在特定目錄中,需徹底刪除以清除集群狀態:
sudo rm -rf /etc/kubernetes/ # 集群配置目錄(含kube-apiserver、kube-controller-manager等配置)
sudo rm -rf /var/lib/kubelet/ # kubelet工作目錄(含Pod數據、卷掛載信息)
sudo rm -rf /var/lib/etcd/ # etcd數據目錄(etcd是Kubernetes的鍵值存儲,存儲集群狀態)
sudo rm -rf ~/.kube/ # 當前用戶的kubeconfig配置文件(含集群訪問憑證)
CNI(容器網絡接口)負責Pod網絡通信,卸載時需清理其配置及殘留網絡接口:
sudo rm -rf /etc/cni/net.d/ # CNI配置文件目錄(含Calico、Flannel等網絡插件配置)
sudo rm -rf /opt/cni/bin/ # CNI插件二進制文件目錄(如bridge、host-local等)
# 刪除殘留的CNI網絡接口(如cni0、veth等)
sudo ip link | grep cni | awk '{print $2}' | sed 's/://g' | xargs -r -n1 ip link delete
若不再需要Docker或Containerd,可進一步卸載以釋放資源:
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 dnf remove -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo systemctl stop containerd
sudo systemctl disable containerd
sudo rm -rf /var/lib/containerd /etc/containerd
sudo dnf remove -y containerd # 或使用yum
重啟系統可確保所有更改生效,清除臨時文件及內核模塊殘留:
sudo reboot
uninstall_k8s.sh
),但需仔細檢查腳本內容,避免誤刪系統文件。kubeadm init
)。