Kubernetes 集群卸载详细步骤

在 Kubernetes 的运维过程中,有时需要彻底卸载集群及相关依赖(如 Docker、Containerd)以便重新部署或者清理测试环境。以下内容提供了详细步骤和一键卸载脚本。

1、卸载步骤
1.1 停止并移除节点

在 Master 节点执行:

kubectl drain <节点名> --delete-local-data --force --ignore-daemonsets
kubectl delete node <节点名>

在每个节点执行:

sudo systemctl stop kubelet
sudo systemctl disable kubelet
sudo kubeadm reset -f

1.2 删除 Kubernetes 相关目录

rm -rf ~/.kube
rm -rf /etc/kubernetes
rm -rf /etc/cni/net.d
rm -rf /var/lib/etcd
rm -rf /var/lib/kubelet
rm -rf /var/lib/cni
rm -rf /var/lib/dockershim

1.3 清理网络规则

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

1.4 卸载 Kubernetes组件
Ubuntu/Debian

sudo apt-get purge -y kubeadm kubectl kubelet kubernetes-cni kube*
sudo apt-get autoremove -y
sudo apt-get clean

CentOS/RHEL

sudo yum remove -y kubeadm kubectl kubelet kubernetes-cni kube*
sudo yum autoremove -y

1.5 卸载 Docker / Containerd
Docker

sudo systemctl stop docker
sudo systemctl disable docker
sudo rm -rf /var/lib/docker /etc/docker /etc/systemd/system/docker.service.d
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin || true
sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin || true

Containerd

sudo systemctl stop containerd
sudo systemctl disable containerd
sudo rm -rf /var/lib/containerd /etc/containerd
sudo apt-get purge -y containerd || true
sudo yum remove -y containerd || true

1.6 清理 systemd 并重启

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo reboot

完成上述步骤后,节点会恢复到干净状态,可用于重新部署 K8s 集群。

2、一键卸载脚本
以下脚本整合了以上步骤,并增加交互确认,避免误操作。

#!/bin/bash
set -e

echo "====================================================="
echo "⚠️  警告:该脚本将卸载 Kubernetes (kubeadm/kubelet/kubectl)"
echo "⚠️  同时清理 Docker / Containerd 及其所有数据!"
echo "⚠️  这会删除 etcd、容器镜像、Pod 数据等,无法恢复。"
echo "====================================================="
read -p "是否继续?输入 'yes' 确认: " confirm

if[["$confirm" !="yes"]]; then
  echo "❌ 已取消操作。"
  exit 1
fi

echo "=== 停止 Kubernetes 服务 ==="
systemctl stop kubelet 2>/dev/null || true
systemctl disable kubelet 2>/dev/null || true

echo "=== 执行 kubeadm reset ==="
kubeadm reset -f 2>/dev/null || true

echo "=== 删除 Kubernetes 相关目录 ==="
rm -rf ~/.kube /etc/kubernetes /etc/cni/net.d /var/lib/etcd /var/lib/kubelet /var/lib/cni /var/lib/dockershim

echo "=== 清理 iptables 规则 ==="
iptables -F || true
iptables -X || true
iptables -t nat -F || true
iptables -t nat -X || true
iptables -t mangle -F || true
iptables -t mangle -X || true
iptables -P FORWARD ACCEPT || true

echo "=== 卸载 Kubernetes 组件 ==="
if command -v apt-get >/dev/null 2>&1; then
    apt-get purge -y kubeadm kubectl kubelet kubernetes-cni kube* || true
    apt-get purge -y containerd docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin || true
    apt-get autoremove -y
    apt-get clean
elif command -v yum >/dev/null 2>&1; then
    yum remove -y kubeadm kubectl kubelet kubernetes-cni kube* || true
    yum remove -y containerd docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin || true
    yum autoremove -y
fi

echo "=== 卸载 Docker 和 Containerd ==="
systemctl stop docker 2>/dev/null || true
systemctl disable docker 2>/dev/null || true
systemctl stop containerd 2>/dev/null || true
systemctl disable containerd 2>/dev/null || true
rm -rf /var/lib/docker /etc/docker /etc/systemd/system/docker.service.d /var/lib/containerd /etc/containerd

echo "=== 清理 systemd 配置并重载 ==="
systemctl daemon-reexec
systemctl daemon-reload

echo "====================================================="
echo "✅ 卸载完成!建议执行 reboot 重启系统。"
echo "====================================================="
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

㍿L

你的鼓励是我最大的激励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值