云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > K8S集群卸载

K8S集群卸载清理的完整步骤流程

作者:牛肉胡辣汤

在Kubernetes(简称K8S)的生命周期中,可能会遇到需要卸载和清理集群的情况,本文将详细介绍如何安全地卸载K8S集群,并清理所有相关的资源,需要的可以了解下

K8S集群卸载清理

在Kubernetes(简称K8S)的生命周期中,可能会遇到需要卸载和清理集群的情况。无论是为了迁移、升级还是彻底删除不再使用的资源,正确的卸载和清理过程对于保持环境的整洁和安全至关重要。本文将详细介绍如何安全地卸载K8S集群,并清理所有相关的资源。

准备工作

在开始卸载K8S集群之前,确保你有足够的权限执行这些操作。通常,这需要root用户或具有相应权限的用户账号。此外,确保所有依赖于该K8S集群的服务都已经停止并迁移到其他环境,以避免服务中断。

卸载K8S集群

1. 停止所有应用

首先,需要停止在K8S集群上运行的所有应用和服务。可以通过以下命令列出所有的命名空间和它们中的资源:

然后,逐个删除这些资源,例如:

kubectl delete deployment <deployment-name> -n <namespace>
kubectl delete service <service-name> -n <namespace>

2. 删除命名空间

确认所有资源都被删除后,可以删除所有自定义的命名空间:

kubectl delete namespace <namespace-name>

3. 清理K8S组件

接下来,需要卸载K8S的核心组件。如果你是通过​​kubeadm​​安装的K8S,可以使用以下命令来重置节点:

kubeadm reset

这将移除Kubernetes组件并清理网络配置。

4. 清理网络配置

K8S使用CNI插件来管理网络,如Flannel、Calico等。根据你所使用的CNI插件,可能需要手动清理网络配置。例如,如果使用的是Flannel,可以执行:

sudo rm -rf /var/lib/cni/
sudo ip link delete cni0
sudo ip link delete flannel.1

5. 卸载Docker或其他容器运行时

如果你使用的是Docker作为容器运行时,可以考虑卸载Docker以释放系统资源:

sudo apt-get remove docker-ce docker-ce-cli containerd.io

或者,如果你使用的是其他容器运行时,参考相应的文档进行卸载。

6. 清理存储卷

最后,不要忘记清理任何持久化存储卷。这些卷可能存储在本地磁盘或外部存储服务中。确保所有数据已经备份,然后删除这些卷:

kubectl get pv
kubectl delete pv <pv-name>

验证卸载

完成上述步骤后,可以通过检查系统状态来验证K8S集群是否已成功卸载:

检查是否有残留的K8S进程:

ps aux | grep kube

检查网络接口:

ip a

检查文件系统中是否有残留的K8S文件:

sudo find / -name "kube*"

正确地卸载和清理K8S集群不仅有助于保持系统的清洁,还可以防止潜在的安全风险。希望本文提供的步骤能帮助你在需要时顺利地完成K8S集群的卸载和清理工作。

方法补充

在 Kubernetes (K8S) 集群中,卸载和清理资源是一个重要的维护任务。这包括删除命名空间、Pods、Deployments、Services 等资源。以下是一些常见的卸载和清理操作的示例代码,使用 ​​kubectl​​ 命令行工具来执行这些操作。

1. 删除命名空间

删除一个命名空间会自动删除该命名空间下的所有资源。

kubectl delete namespace <namespace-name>

例如,删除名为 ​​my-namespace​​ 的命名空间:

kubectl delete namespace my-namespace

2. 删除特定资源

删除 Deployment

kubectl delete deployment <deployment-name> -n <namespace-name>

例如,删除 ​​my-deployment​​:

kubectl delete deployment my-deployment -n my-namespace

删除 Pod

kubectl delete pod <pod-name> -n <namespace-name>

例如,删除 ​​my-pod​​:

kubectl delete pod my-pod -n my-namespace

删除 Service

kubectl delete service <service-name> -n <namespace-name>

例如,删除 ​​my-service​​:

kubectl delete service my-service -n my-namespace

3. 批量删除资源

可以使用 ​​kubectl delete​​ 命令的 ​​-l​​ 参数来批量删除具有特定标签的资源。

删除具有特定标签的所有 Pods

kubectl delete pods -l app=my-app -n <namespace-name>

例如,删除 ​​app=my-app​​ 标签的所有 Pods:

kubectl delete pods -l app=my-app -n my-namespace

删除具有特定标签的所有 Deployments

kubectl delete deployments -l app=my-app -n <namespace-name>

例如,删除 ​​app=my-app​​ 标签的所有 Deployments:

kubectl delete deployments -l app=my-app -n my-namespace

4. 清理未使用的资源

清理未使用的 PVC(PersistentVolumeClaims)

kubectl get pvc --all-namespaces | grep "Released" | awk '{print $2}' | xargs -I {} kubectl delete pvc {} -n {}

清理未使用的 PV(PersistentVolumes)

kubectl get pv | grep "Released" | awk '{print $1}' | xargs kubectl delete pv

5. 使用脚本进行自动化清理

可以编写一个脚本来自动化这些清理操作。以下是一个简单的 Bash 脚本示例:

#!/bin/bash

NAMESPACE="my-namespace"
LABEL="app=my-app"

# 删除具有特定标签的所有 Pods
kubectl delete pods -l ${LABEL} -n ${NAMESPACE}

# 删除具有特定标签的所有 Deployments
kubectl delete deployments -l ${LABEL} -n ${NAMESPACE}

# 删除具有特定标签的所有 Services
kubectl delete services -l ${LABEL} -n ${NAMESPACE}

# 删除命名空间
kubectl delete namespace ${NAMESPACE}

# 清理未使用的 PVC
kubectl get pvc --all-namespaces | grep "Released" | awk '{print $2}' | xargs -I {} kubectl delete pvc {} -n {}

# 清理未使用的 PV
kubectl get pv | grep "Released" | awk '{print $1}' | xargs kubectl delete pv

将上述脚本保存为 ​​cleanup.sh​​,然后赋予执行权限并运行:

chmod +x cleanup.sh
./cleanup.sh

这些示例代码和脚本可以帮助你有效地管理和清理 Kubernetes 集群中的资源。根据实际需求,你可以进一步定制和扩展这些脚本。

在 Kubernetes (K8S) 集群中进行卸载和清理操作是一个细致且重要的过程,以确保不会留下任何残留的资源或配置,避免对未来的部署造成影响。下面是一些常见的步骤和相关的命令,用于卸载和清理 K8S 集群。

1. 删除所有命名空间中的资源

首先,你需要删除所有命名空间中的资源。这可以通过以下命令实现:

kubectl delete all --all-namespaces

这条命令会删除所有命名空间中的 Pod、Service、Deployment 等资源。如果你只想删除特定类型的资源,可以使用更具体的命令,例如:

kubectl delete pods --all-namespaces

2. 删除所有命名空间

删除了所有资源后,可以删除除 ​​kube-system​​ 和 ​​default​​ 之外的所有命名空间:

kubectl get namespaces -o json | jq '.items[] | select(.metadata.name != "kube-system" and .metadata.name != "default") | .metadata.name' -r | xargs kubectl delete namespace

3. 清理 ​​kube-system​​ 命名空间

​kube-system​​ 命名空间包含了 Kubernetes 系统组件,通常不应该被删除。但是,你可以清理这个命名空间中不再需要的资源,比如完成的任务、失败的 Pod 等:

kubectl -n kube-system delete pods --field-selector status.phase=Failed
kubectl -n kube-system delete pods --field-selector status.phase=Succeeded

4. 清理存储卷

如果使用了持久化存储卷(Persistent Volumes, PVs),确保这些存储卷也被清理:

kubectl get pv | grep Released | awk '{print $1}' | xargs kubectl delete pv

5. 卸载 K8S 组件

如果你需要完全卸载 Kubernetes 集群,包括 Master 节点和 Worker 节点上的所有组件,可以使用特定的卸载脚本。这些脚本通常由安装 Kubernetes 的工具提供,例如 ​​kubeadm​​:

# 在所有节点上执行
kubeadm reset

# 清理 Docker 相关的资源
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
rm -rf /etc/kubernetes/*

# 重启 Docker 服务
systemctl start docker

6. 清理网络配置

如果使用了特定的网络插件(如 Flannel、Calico 等),可能还需要手动清理网络配置:

# 清理 Flannel 网络
ip link delete cni0
ip link delete flannel.1

# 清理 Calico 网络
calicoctl node stop
calicoctl node remove <hostname>

7. 检查并清理剩余文件

最后,检查并删除任何剩余的 Kubernetes 配置文件和日志文件:

rm -rf /etc/kubernetes/
rm -rf /var/log/kubernetes/

注意事项

通过以上步骤,你可以有效地卸载和清理 Kubernetes 集群,确保环境的干净和安全。

到此这篇关于K8S集群卸载清理的完整步骤流程的文章就介绍到这了,更多相关K8S集群卸载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文