如何御载k8s、ingress、calilo、kubesphere

一、Master 节点:卸载 KubeSphere(优先删)

方式 1:yaml 安装 KubeSphere(最常见)

# 1. 卸载ks-installer核心组件
kubectl delete -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml
kubectl delete -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/cluster-configuration.yaml

# 2. 删除kubesphere所有命名空间资源
kubectl delete ns kubesphere-monitoring-system kubesphere-devops-system kubesphere-logging-system kubesphere-system kubesphere-controls-system

# 3. 强制清理残留CRD(删不干净必执行)
kubectl get crd | grep kubesphere | awk '{print $1}' | xargs kubectl delete crd

 

方式 2:kubekey (kk) 一键安装 KubeSphere+k8s

# 进入kk目录执行删除集群(会连带清理k8s资源,跳过后续资源清理步骤)
./kk delete cluster

 

二、Master 节点:卸载 ingress-nginx

Helm 安装(推荐)

helm list -n ingress-nginx
helm uninstall ingress-nginx -n ingress-nginx
kubectl delete ns ingress-nginx
# 删除ingress crd
kubectl get crd | grep ingress | awk '{print $1}' | xargs kubectl delete crd

 

yaml 文件安装

kubectl delete -f ingress-nginx.yaml
kubectl delete ns ingress-nginx

 

三、Master 节点:卸载 Calico 网络插件

yaml 部署 calico

# 删除calico全部资源
kubectl delete -f calico.yaml
# 删除calico CRD
kubectl get crd | grep calico | awk '{print $1}' | xargs kubectl delete crd
# 删除calico命名空间
kubectl delete ns calico-system tigera-operator

 

Helm 部署 calico

helm uninstall calico -n calico-system
kubectl delete ns calico-system tigera-operator
kubectl get crd | grep calico | xargs kubectl delete crd

 

四、Master 节点:清空集群全部资源(彻底释放)

# 删除所有pod、svc、deploy、statefulset、pvc
kubectl delete --all pods --all-namespaces --force --grace-period=0
kubectl delete --all deployments,statefulsets,daemonsets,services,pvc,pv --all-namespaces

# 驱逐并删除所有worker节点
kubectl get nodes
# 替换节点名执行(所有worker)
kubectl drain worker-01 --delete-local-data --force --ignore-daemonsets
kubectl delete node worker-01

 

五、所有节点(Master+Worker)执行:kubeadm 重置集群

1. 停止 kubelet 服务

sudo systemctl stop kubelet
sudo systemctl disable kubelet

 

2. kubeadm 强制重置

sudo kubeadm reset -f --cri-socket /run/containerd/containerd.sock
# 若使用docker运行时
# sudo kubeadm reset -f --cri-socket /var/run/dockershim.sock

 

六、所有节点:深度清理系统残留(关键,否则重装报错)

1. 删除 k8s 核心目录

sudo rm -rf /etc/kubernetes
sudo rm -rf /var/lib/kubelet
sudo rm -rf /var/lib/etcd
sudo rm -rf /var/lib/cni
sudo rm -rf /etc/cni/net.d
rm -rf ~/.kube
sudo rm -rf /var/log/pods /var/log/containers

 

2. 清理容器运行时(containerd)

# 删除所有容器
sudo crictl rm -fa
# 删除所有镜像
sudo crictl rmi -a
# 清空containerd数据
sudo systemctl stop containerd
sudo rm -rf /var/lib/containerd/*
sudo systemctl start containerd

# ========== Docker环境替换下方命令 ==========
# sudo docker rm -f $(docker ps -aq)
# sudo docker rmi -f $(docker images -aq)
# sudo docker system prune -a --volumes -f

 

3. 清空 iptables/ipvs 网络规则(calico 遗留大量规则)

sudo iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
sudo ip6tables -F && ip6tables -t nat -F && ip6tables -t mangle -F && ip6tables -X
sudo ipvsadm -C 2>/dev/null || true

 

4. 删除 calico 虚拟网卡(cni0、tunl0、calix-xxx)

# 批量删除k8s虚拟网卡
sudo ip link delete cni0 || true
sudo ip link delete tunl0 || true
sudo ip link delete flannel.1 || true
# 查看残留网卡:ip link

 

七、所有节点:彻底卸载 kubeadm/kubelet/kubectl 软件包

CentOS/RHEL 系 (yum/dnf)

sudo dnf remove -y kubelet kubeadm kubectl kubernetes-cni cri-tools
sudo dnf autoremove -y
# 可选:删除kubernetes yum源
sudo rm -f /etc/yum.repos.d/kubernetes.repo

 

Ubuntu/Debian 系 (apt)

sudo apt purge -y kubelet kubeadm kubectl kubernetes-cni cri-tools
sudo apt autoremove -y
# 可选删除apt源
sudo rm -f /etc/apt/sources.list.d/kubernetes.list

 

八、收尾验证(确认卸载干净)

# 1. 无kube命令
kubeadm version
kubectl version

# 2. 无k8s目录
ls /etc/kubernetes
ls /var/lib/kubelet

# 3. 无calico/ingress/kubesphere网卡与iptables
ip link
sudo iptables -L

 

一键清理脚本(所有节点复制执行)

#!/bin/bash
set -e
systemctl stop kubelet
systemctl disable kubelet
kubeadm reset -f --cri-socket /run/containerd/containerd.sock
# 清理目录
rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/etcd /var/lib/cni /etc/cni/net.d ~/.kube /var/log/pods /var/log/containers
# 清理容器
crictl rm -fa
crictl rmi -a
systemctl stop containerd
rm -rf /var/lib/containerd/*
systemctl start containerd
# 清理网络
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
ip6tables -F && ip6tables -t nat -F && ip6tables -t mangle -F && ip6tables -X
ipvsadm -C 2>/dev/null || true
ip link delete cni0 || true
ip link delete tunl0 || true
# 卸载包
if command -v dnf;then
dnf remove -y kubelet kubeadm kubectl kubernetes-cni cri-tools && dnf autoremove -y
elif command -v apt;then
apt purge -y kubelet kubeadm kubectl kubernetes-cni cri-tools && apt autoremove -y
fi
echo "全部清理完成"

 

posted @ 2026-07-18 07:47  民工黑猫  阅读(8)  评论(0)    收藏  举报