修补问题
This commit is contained in:
parent
0fab3180e0
commit
949f303edd
@ -20,6 +20,7 @@ echo 'force-confold' > /etc/dpkg/dpkg.cfg.d/force-confold
|
|||||||
# 优化:仅停止packagekit(不mask)
|
# 优化:仅停止packagekit(不mask)
|
||||||
systemctl stop packagekit
|
systemctl stop packagekit
|
||||||
|
|
||||||
|
|
||||||
echo "########## 安装K8S必须root用户下执行 ###########"
|
echo "########## 安装K8S必须root用户下执行 ###########"
|
||||||
# 检查是否为root用户
|
# 检查是否为root用户
|
||||||
if [ "$(id -u)" != "0" ]; then
|
if [ "$(id -u)" != "0" ]; then
|
||||||
@ -27,6 +28,9 @@ if [ "$(id -u)" != "0" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "########## 先清理K8S缓存/环境 ###########"
|
||||||
|
/opt/k8s_uninstall.sh || log_error "清理K8S环境失败,请检查脚本或手动清理残留"
|
||||||
|
|
||||||
# 新ubuntu18.04设备环境先换阿里源:
|
# 新ubuntu18.04设备环境先换阿里源:
|
||||||
cp /etc/apt/sources.list /etc/apt/sources.list.bak
|
cp /etc/apt/sources.list /etc/apt/sources.list.bak
|
||||||
tee /etc/apt/sources.list << EOF
|
tee /etc/apt/sources.list << EOF
|
||||||
@ -536,8 +540,8 @@ if [ "$1" == "master" ]; then
|
|||||||
kubectl apply -f /opt/kube-flannel.yml || log_error "本地安装flannel网络插件失败"
|
kubectl apply -f /opt/kube-flannel.yml || log_error "本地安装flannel网络插件失败"
|
||||||
log_info "正在安装MetricsServer插件"
|
log_info "正在安装MetricsServer插件"
|
||||||
kubectl apply -f /opt/components.yaml || log_error "本地安装MetricsServer插件失败"
|
kubectl apply -f /opt/components.yaml || log_error "本地安装MetricsServer插件失败"
|
||||||
log_info "正在安装Ingress-nginx-controller插件"
|
# log_info "正在安装Ingress-nginx-controller插件"
|
||||||
kubectl apply -f /opt/ingress-nginx-controller.yaml || log_error "本地安装ingress-nginx-controller插件失败"
|
# kubectl apply -f /opt/ingress-nginx-controller.yaml || log_error "本地安装ingress-nginx-controller插件失败"
|
||||||
log_info "正在安装GPU模式必要插件"
|
log_info "正在安装GPU模式必要插件"
|
||||||
kubectl apply -f /opt/nvidia-device-plugin.yml || log_error "本地安装GPU模式必要插件失败"
|
kubectl apply -f /opt/nvidia-device-plugin.yml || log_error "本地安装GPU模式必要插件失败"
|
||||||
log_info "正在安装nfs-client-provisioner插件"
|
log_info "正在安装nfs-client-provisioner插件"
|
||||||
|
|||||||
@ -1,87 +1,117 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
# 停止K8s相关服务
|
# 定义颜色输出函数
|
||||||
echo "停止K8s相关服务..."
|
red_echo() {
|
||||||
ps -aux | grep Opera | grep -v grep | awk '{print $2}' | xargs kill -9
|
echo -e "\033[31m$1\033[0m"
|
||||||
systemctl stop kubelet
|
}
|
||||||
echo "移除缓存忘卡配置"
|
green_echo() {
|
||||||
ip link delete cni0
|
echo -e "\033[32m$1\033[0m"
|
||||||
systemctl stop kube-apiserver
|
}
|
||||||
|
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
|
# 2. 清理进程
|
||||||
echo "执行kubeadm reset..."
|
green_echo "2. 清理K8s相关进程..."
|
||||||
kubeadm reset -f
|
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
|
# 3. 清理网络资源
|
||||||
rm -rf /etc/cni/net.d
|
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
|
# 4. kubeadm reset
|
||||||
rm -rf /etc/kubernetes/manifests
|
green_echo "4. 执行kubeadm reset..."
|
||||||
rm -rf /etc/kubernetes/pki
|
kubeadm reset -f &> /dev/null || true
|
||||||
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
|
|
||||||
|
|
||||||
# 删除K8s相关二进制文件(假设在/usr/local/bin)
|
# 5. 卸载软件包
|
||||||
echo "删除K8s相关二进制文件..."
|
green_echo "5. 卸载K8s及容器运行时软件包..."
|
||||||
sudo rm /usr/local/bin/kube*
|
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数据(谨慎操作)
|
# 6. 清理配置和数据目录
|
||||||
echo "清理Containerd数据..."
|
green_echo "6. 清理配置和数据目录..."
|
||||||
sudo rm -rf /var/lib/containerd /usr/bin/containerd*
|
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
|
||||||
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
|
|
||||||
|
|
||||||
# 清理iptables规则
|
# 7. 清理systemd服务残留
|
||||||
echo "清理iptables规则..."
|
green_echo "7. 清理systemd服务残留..."
|
||||||
# sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
|
rm -f /lib/systemd/system/{containerd,docker,kubelet}.service &> /dev/null || true
|
||||||
# ipvsadm --clear
|
rm -f /etc/systemd/system/multi-user.target.wants/{containerd,docker,kubelet}.service &> /dev/null || true
|
||||||
apt autoremove -y
|
systemctl daemon-reload &> /dev/null || true
|
||||||
apt autoclean -y
|
|
||||||
apt clean -y
|
|
||||||
apt update -y
|
|
||||||
|
|
||||||
# 停止docker
|
# 8. 清理网络规则
|
||||||
echo "停止docker并清理..."
|
green_echo "8. 清理iptables和ipvs规则..."
|
||||||
docker rmi $(docker images -q)
|
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X &> /dev/null || true
|
||||||
docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && sudo systemctl stop docker
|
ipvsadm --clear &> /dev/null || true
|
||||||
sudo systemctl stop docker.service
|
|
||||||
sudo systemctl stop docker.socket
|
|
||||||
rm -rf /etc/docker/daemon.json
|
|
||||||
rm -rf /usr/bin/docker-compose
|
|
||||||
|
|
||||||
# 清理Docker
|
# 9. 清理源和kubeconfig
|
||||||
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
|
green_echo "9. 清理软件源和kubeconfig..."
|
||||||
apt purge -y containerd.io containerd
|
rm -rf /etc/apt/sources.list.d/{docker,kubernetes,kuboard}* &> /dev/null || true
|
||||||
|
rm -rf $HOME/.kube/config &> /dev/null || true
|
||||||
|
|
||||||
# 检查并删除当前root用户的kubeconfig文件
|
# 10. 更新软件包缓存
|
||||||
echo "检查并删除当前root用户的kubeconfig文件..."
|
green_echo "10. 更新软件包缓存..."
|
||||||
sudo rm -rf $HOME/.kube/config
|
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*
|
for service in kubelet docker containerd; do
|
||||||
rm -rf /etc/apt/sources.list.d/kuboard*
|
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
|
for cmd in kubectl kubeadm docker containerd; do
|
||||||
apt clean -y
|
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