1. 停止并禁用Kubernetes相關服務
首先停止所有正在運行的Kubernetes服務,防止其在系統重啟后自動啟動:
sudo systemctl stop kubelet
sudo systemctl disable kubelet
sudo systemctl stop kube-proxy
sudo systemctl disable kube-proxy
# 如果使用Docker作為容器運行時,還需停止Docker服務
sudo systemctl stop docker
sudo systemctl disable docker
2. 卸載Kubernetes核心組件
使用apt-get命令徹底移除Kubernetes及其相關組件(包括kubeadm、kubectl、kubelet和CNI插件):
sudo apt-get purge -y kubeadm kubectl kubelet kubernetes-cni kube*
# 清理無用的依賴包和緩存
sudo apt-get autoremove -y
sudo apt-get autoclean
3. 刪除Kubernetes配置文件與數據目錄
移除Kubernetes的所有配置文件、證書及數據存儲目錄,確保無殘留配置:
sudo rm -rf /etc/kubernetes/ # Kubernetes主配置目錄
sudo rm -rf /etc/cni/net.d/ # CNI網絡配置目錄
sudo rm -rf /var/lib/kubelet/ # Kubelet數據目錄
sudo rm -rf /var/lib/kube-proxy/ # Kube-proxy數據目錄
sudo rm -rf /var/lib/etcd/ # etcd數據目錄(若有使用)
sudo rm -rf ~/.kube/ # 用戶kube配置目錄(~/.kube/config等)
4. 清理容器運行時(若使用Docker)
如果使用Docker作為容器運行時,需清理Docker中的Kubernetes相關鏡像、容器及配置:
# 清理所有未使用的Docker資源(鏡像、容器、網絡、卷)
sudo docker system prune -af --volumes
# 刪除Kubernetes專用鏡像(可根據實際鏡像名稱調整)
sudo docker rmi -f $(docker images | grep -E 'k8s.gcr.io|kubernetes' | awk '{print $3}')
# 刪除Docker配置目錄
sudo rm -rf /etc/docker/
sudo rm -rf /var/lib/docker/
5. 清理網絡配置
刪除Kubernetes創建的網絡接口、CNI配置及iptables規則,避免網絡殘留:
# 刪除Kubernetes創建的網絡接口(如cni0、flannel.1等)
ip link | grep -E 'cni0|flannel' | awk '{print $2}' | sed 's/://g' | xargs -r -n1 ip link delete
# 清空iptables規則(包括nat、mangle表)
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -X
# 重置iptables默認策略(可選,根據需求調整)
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
6. 重啟系統
重啟系統以應用所有更改,確保殘留進程和服務被徹底終止:
sudo reboot
7. 驗證卸載結果
重啟后,通過以下命令驗證Kubernetes是否已完全卸載:
kubectl get nodes # 應返回“command not found”或“No resources found”
kubeadm version # 應返回“command not found”
kubelet --version # 應返回“command not found”
注意事項
/var/lib/etcd/(etcd數據)、/var/lib/kubelet/pods/(Pod數據)等重要目錄,避免數據丟失。sudo systemctl stop containerd、sudo rm -rf /var/lib/containerd/)。calicoctl delete命令)。