commit
7a4e301092
@ -20,6 +20,7 @@ echo 'force-confold' > /etc/dpkg/dpkg.cfg.d/force-confold
|
||||
# 优化:仅停止packagekit(不mask)
|
||||
systemctl stop packagekit
|
||||
|
||||
|
||||
echo "########## 安装K8S必须root用户下执行 ###########"
|
||||
# 检查是否为root用户
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
@ -27,6 +28,9 @@ if [ "$(id -u)" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "########## 先清理K8S缓存/环境 ###########"
|
||||
/opt/k8s_uninstall.sh || log_error "清理K8S环境失败,请检查脚本或手动清理残留"
|
||||
|
||||
# 新ubuntu18.04设备环境先换阿里源:
|
||||
cp /etc/apt/sources.list /etc/apt/sources.list.bak
|
||||
tee /etc/apt/sources.list << EOF
|
||||
@ -378,7 +382,7 @@ if lspci | grep -i nvidia > /dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
# 5. 验证 CUDA 安装
|
||||
nvcc -V
|
||||
# nvcc -V
|
||||
|
||||
log_info "nvidia-container-runtime 配置完成,containerd已重启"
|
||||
fi
|
||||
@ -536,8 +540,8 @@ if [ "$1" == "master" ]; then
|
||||
kubectl apply -f /opt/kube-flannel.yml || log_error "本地安装flannel网络插件失败"
|
||||
log_info "正在安装MetricsServer插件"
|
||||
kubectl apply -f /opt/components.yaml || log_error "本地安装MetricsServer插件失败"
|
||||
log_info "正在安装Ingress-nginx-controller插件"
|
||||
kubectl apply -f /opt/ingress-nginx-controller.yaml || log_error "本地安装ingress-nginx-controller插件失败"
|
||||
# log_info "正在安装Ingress-nginx-controller插件"
|
||||
# kubectl apply -f /opt/ingress-nginx-controller.yaml || log_error "本地安装ingress-nginx-controller插件失败"
|
||||
log_info "正在安装GPU模式必要插件"
|
||||
kubectl apply -f /opt/nvidia-device-plugin.yml || log_error "本地安装GPU模式必要插件失败"
|
||||
log_info "正在安装nfs-client-provisioner插件"
|
||||
|
||||
@ -1,87 +1,117 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# 停止K8s相关服务
|
||||
echo "停止K8s相关服务..."
|
||||
ps -aux | grep Opera | grep -v grep | awk '{print $2}' | xargs kill -9
|
||||
systemctl stop kubelet
|
||||
echo "移除缓存忘卡配置"
|
||||
ip link delete cni0
|
||||
systemctl stop kube-apiserver
|
||||
# 定义颜色输出函数
|
||||
red_echo() {
|
||||
echo -e "\033[31m$1\033[0m"
|
||||
}
|
||||
green_echo() {
|
||||
echo -e "\033[32m$1\033[0m"
|
||||
}
|
||||
yellow_echo() {
|
||||
echo -e "\033[33m$1\033[0m"
|
||||
}
|
||||
|
||||
systemctl stop nfs-kernel-server
|
||||
rm -rf /k8sdata/*
|
||||
# ========================
|
||||
# 清理流程
|
||||
# ========================
|
||||
cleanup_steps() {
|
||||
# 1. 停止服务
|
||||
green_echo "1. 停止K8s及容器运行时服务..."
|
||||
systemctl stop kubelet kube-apiserver kube-controller-manager kube-scheduler kube-proxy etcd nfs-kernel-server containerd docker &> /dev/null || true
|
||||
systemctl disable kubelet kube-apiserver kube-controller-manager kube-scheduler kube-proxy etcd nfs-kernel-server containerd docker &> /dev/null || true
|
||||
|
||||
# 执行kubeadm reset
|
||||
echo "执行kubeadm reset..."
|
||||
kubeadm reset -f
|
||||
# 2. 清理进程
|
||||
green_echo "2. 清理K8s相关进程..."
|
||||
ps -aux | grep -E 'kube|etcd|containerd|docker' | grep -v grep | awk '{print $2}' | xargs -r kill -9 &> /dev/null || true
|
||||
|
||||
apt-get purge kubelet kubectl kubeadm kubernetes-cni -y --allow-change-held-packages
|
||||
rm -rf /etc/cni/net.d
|
||||
# 3. 清理网络资源
|
||||
green_echo "3. 清理CNI网络资源..."
|
||||
ip link delete cni0 &> /dev/null || true
|
||||
ip link delete flannel.1 &> /dev/null || true
|
||||
rm -rf /var/lib/cni/networks/* /var/lib/cni/loader/* /etc/cni/net.d/* &> /dev/null || true
|
||||
|
||||
rm -rf /var/lib/kubelet /var/lib/kubernetes
|
||||
rm -rf /etc/kubernetes/manifests
|
||||
rm -rf /etc/kubernetes/pki
|
||||
rm -rf /etc/kubernetes
|
||||
rm -rf /var/lib/etcd
|
||||
rm -rf /var/lib/cni
|
||||
rm -rf /var/lib/docker
|
||||
rm -rf /var/lib/containerd
|
||||
rm -rf /var/lib/etcd
|
||||
rm -rf /var/lib/kubelet
|
||||
rm -rf /var/lib/kube-proxy
|
||||
# 删除K8s配置文件
|
||||
echo "删除K8s配置文件..."
|
||||
sudo rm -rf /etc/kubernetes
|
||||
# 4. kubeadm reset
|
||||
green_echo "4. 执行kubeadm reset..."
|
||||
kubeadm reset -f &> /dev/null || true
|
||||
|
||||
# 删除K8s相关二进制文件(假设在/usr/local/bin)
|
||||
echo "删除K8s相关二进制文件..."
|
||||
sudo rm /usr/local/bin/kube*
|
||||
# 5. 卸载软件包
|
||||
green_echo "5. 卸载K8s及容器运行时软件包..."
|
||||
apt-get purge -y kubelet kubectl kubeadm kubernetes-cni cri-tools containerd.io docker-ce docker-ce-cli &> /dev/null || true
|
||||
apt-get autoremove -y &> /dev/null || true
|
||||
|
||||
# 清理Containerd数据(谨慎操作)
|
||||
echo "清理Containerd数据..."
|
||||
sudo rm -rf /var/lib/containerd /usr/bin/containerd*
|
||||
sudo apt purge -y containerd containerd.io cri-tools --allow-change-held-packages
|
||||
rm -rf /etc/containerd /var/lib/containerd /run/containerd
|
||||
rm -f /etc/systemd/system/multi-user.target.wants/containerd.service
|
||||
rm /lib/systemd/system/containerd.service
|
||||
systemctl daemon-reload
|
||||
# 6. 清理配置和数据目录
|
||||
green_echo "6. 清理配置和数据目录..."
|
||||
rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/kubernetes /var/lib/etcd /var/lib/kubeadm /var/lib/kube-proxy /var/lib/containerd /var/lib/docker &> /dev/null || true
|
||||
|
||||
# 清理iptables规则
|
||||
echo "清理iptables规则..."
|
||||
# sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
|
||||
# ipvsadm --clear
|
||||
apt autoremove -y
|
||||
apt autoclean -y
|
||||
apt clean -y
|
||||
apt update -y
|
||||
# 7. 清理systemd服务残留
|
||||
green_echo "7. 清理systemd服务残留..."
|
||||
rm -f /lib/systemd/system/{containerd,docker,kubelet}.service &> /dev/null || true
|
||||
rm -f /etc/systemd/system/multi-user.target.wants/{containerd,docker,kubelet}.service &> /dev/null || true
|
||||
systemctl daemon-reload &> /dev/null || true
|
||||
|
||||
# 停止docker
|
||||
echo "停止docker并清理..."
|
||||
docker rmi $(docker images -q)
|
||||
docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && sudo systemctl stop docker
|
||||
sudo systemctl stop docker.service
|
||||
sudo systemctl stop docker.socket
|
||||
rm -rf /etc/docker/daemon.json
|
||||
rm -rf /usr/bin/docker-compose
|
||||
# 8. 清理网络规则
|
||||
green_echo "8. 清理iptables和ipvs规则..."
|
||||
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X &> /dev/null || true
|
||||
ipvsadm --clear &> /dev/null || true
|
||||
|
||||
# 清理Docker
|
||||
apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y --allow-change-held-packages
|
||||
apt purge -y containerd.io containerd
|
||||
# 9. 清理源和kubeconfig
|
||||
green_echo "9. 清理软件源和kubeconfig..."
|
||||
rm -rf /etc/apt/sources.list.d/{docker,kubernetes,kuboard}* &> /dev/null || true
|
||||
rm -rf $HOME/.kube/config &> /dev/null || true
|
||||
|
||||
# 检查并删除当前root用户的kubeconfig文件
|
||||
echo "检查并删除当前root用户的kubeconfig文件..."
|
||||
sudo rm -rf $HOME/.kube/config
|
||||
# 10. 更新软件包缓存
|
||||
green_echo "10. 更新软件包缓存..."
|
||||
apt-get update &> /dev/null || true
|
||||
}
|
||||
|
||||
# kubord
|
||||
echo "清理kuboard相关配置..."
|
||||
sed -i '/\/opt \*(rw,sync,no_root_squash)/d' /etc/exports
|
||||
# ========================
|
||||
# 验证清理结果
|
||||
# ========================
|
||||
verify_cleanup() {
|
||||
green_echo "\n开始验证清理结果..."
|
||||
local is_clean=true
|
||||
|
||||
rm -rf /etc/apt/sources.list.d/docker*
|
||||
rm -rf /etc/apt/sources.list.d/kubernetes*
|
||||
rm -rf /etc/apt/sources.list.d/kuboard*
|
||||
# 检查关键服务状态
|
||||
for service in kubelet docker containerd; do
|
||||
if systemctl is-active "$service" &> /dev/null; then
|
||||
red_echo " ❌ 服务 $service 仍在运行"
|
||||
is_clean=false
|
||||
else
|
||||
green_echo " ✔️ 服务 $service 已停止"
|
||||
fi
|
||||
done
|
||||
|
||||
apt autoremove -y
|
||||
apt autoclean -y
|
||||
apt clean -y
|
||||
# 检查关键命令是否残留
|
||||
for cmd in kubectl kubeadm docker containerd; do
|
||||
if command -v "$cmd" &> /dev/null; then
|
||||
red_echo " ❌ 命令 $cmd 仍存在"
|
||||
is_clean=false
|
||||
else
|
||||
green_echo " ✔️ 命令 $cmd 已移除"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "恭喜你!!! K8s相关内容已清理, 可准备重新安装。"
|
||||
# 检查关键目录是否残留
|
||||
for dir in /etc/kubernetes /var/lib/kubelet /var/lib/containerd /var/lib/docker; do
|
||||
if [ -d "$dir" ]; then
|
||||
red_echo " ❌ 目录 $dir 未完全清理"
|
||||
is_clean=false
|
||||
else
|
||||
green_echo " ✔️ 目录 $dir 已删除"
|
||||
fi
|
||||
done
|
||||
|
||||
# 最终结果
|
||||
if $is_clean; then
|
||||
green_echo "\n🎉 清理成功!环境已准备好重新安装K8s。"
|
||||
else
|
||||
red_echo "\n❌ 清理不彻底,请手动检查残留项!"
|
||||
fi
|
||||
}
|
||||
|
||||
# ========================
|
||||
# 执行清理和验证
|
||||
# ========================
|
||||
cleanup_steps
|
||||
verify_cleanup
|
||||
Loading…
x
Reference in New Issue
Block a user