在卸載前,需先停止所有Kubernetes相關服務,避免殘留進程影響卸載流程。執行以下命令:
sudo systemctl stop kubelet kube-proxy
# 若使用其他組件(如kube-apiserver、kube-controller-manager等),也需停止
sudo systemctl stop kube-apiserver kube-controller-manager kube-scheduler
停止服務后,建議禁用這些服務以防止自動啟動:
sudo systemctl disable kubelet kube-proxy
若集群是通過kubeadm
創建的,可使用kubeadm reset
命令清理集群狀態(如etcd數據、證書等),恢復節點至未加入集群的狀態:
sudo kubeadm reset -f # 強制重置(若遇到權限問題可添加--force)
執行后,節點上的Kubernetes集群相關配置(如kubelet證書、etcd數據)將被清除。
使用CentOS的包管理器yum
(或dnf
,CentOS 8+)卸載Kubernetes核心組件及依賴:
sudo yum remove -y kubeadm kubelet kubectl kubernetes-cni kube*
kubernetes-cni
是Kubernetes默認的網絡插件,需一并卸載;kube*
通配符可確保刪除所有以"kube"開頭的軟件包。
徹底刪除Kubernetes的配置文件、證書及數據存儲目錄,避免殘留敏感信息:
# 刪除集群配置目錄(包含kubeconfig、證書等)
sudo rm -rf /etc/kubernetes/
# 刪除etcd數據目錄(etcd是Kubernetes的鍵值存儲,存儲集群狀態)
sudo rm -rf /var/lib/etcd/
# 刪除kubelet數據目錄(包含Pod、容器信息)
sudo rm -rf /var/lib/kubelet/
# 刪除用戶級kubeconfig文件(位于用戶家目錄)
sudo rm -rf $HOME/.kube/
若使用了CNI網絡插件(如Flannel、Calico),需刪除其配置文件及數據目錄:
# 刪除CNI配置文件(通常位于/etc/cni/net.d/)
sudo rm -rf /etc/cni/net.d/
# 刪除CNI插件數據目錄(如Flannel的/var/lib/cni/networks/)
sudo rm -rf /var/lib/cni/networks/
若集群使用Docker作為容器運行時,可進一步卸載Docker以清理容器相關數據:
# 停止Docker服務
sudo systemctl stop docker
# 卸載Docker軟件包
sudo yum remove -y docker-ce docker-ce-cli containerd.io
# 刪除Docker數據目錄(包含鏡像、容器、卷等)
sudo rm -rf /var/lib/docker/
清理iptables中的殘留網絡規則(避免影響后續網絡配置),并重啟系統使所有更改生效:
# 清空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
# 重啟系統
sudo reboot
重啟后,可通過以下命令檢查Kubernetes相關進程及服務是否已完全清除:
# 檢查Kubernetes相關進程
ps aux | grep kube
# 檢查Kubernetes相關服務狀態
systemctl list-units --type=service | grep kube
若無輸出,則說明Kubernetes已徹底卸載。