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

 更新时间:2025年08月18日 08:47:27   作者:牛肉胡辣汤  
在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 版本和安装方式的不同而有所差异,建议参考官方文档或安装工具的文档。

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

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

相关文章

  • k8s pod和service网络暴露详解

    k8s pod和service网络暴露详解

    这篇文章主要介绍了借助iptables的路由转发功能,打通k8s集群内的pod和service网络,与外部网络联通,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 最新青龙面板2.10.2搭建+XDD-PLUS的保姆级教程

    最新青龙面板2.10.2搭建+XDD-PLUS的保姆级教程

    这篇文章主要介绍了最新青龙面板2.10.2搭建+XDD-PLUS的保姆级教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Kubernetes实现CI与CD配置教程

    Kubernetes实现CI与CD配置教程

    这篇文章主要为大家介绍了基于Kubernetes实现CI与CD配置教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 详解k8s NetworkPolicy 网络策略是怎么样的

    详解k8s NetworkPolicy 网络策略是怎么样的

    这篇文章主要为大家介绍了k8s NetworkPolicy 网络策略是怎么样的深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Ansible部署K8s集群的方法

    Ansible部署K8s集群的方法

    这篇文章主要介绍了Ansible部署K8s集群,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • k8s1.20二进制安装实践

    k8s1.20二进制安装实践

    这篇文章详细介绍了如何在CentOS 7.9上部署Kubernetes 1.20.0集群,包括系统环境配置、基本组件安装、证书生成、Kubernetes组件配置、高可用配置、Node节点配置、安装Calico、CoreDNS、MetricsServer以及集群验证等步骤
    2026-03-03
  • k8s admin用户生成token方式

    k8s admin用户生成token方式

    用户使用Kubernetes 1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其token,最后检查token是否存在及生效情况
    2025-09-09
  • 在k8s中副本使用pod的IP注册到consul全过程

    在k8s中副本使用pod的IP注册到consul全过程

    文章介绍了如何在Kubernetes环境中通过DNS获取POD的IP,并将其用于注册到Consul,通过修改服务启动脚本和Kubernetes样本文件,使得微服务能够获取POD信息并使用该IP注册到Consul,从而实现服务间的发现和通信
    2026-02-02
  • Kubernetes核心组件实战解析之API Server与Scheduler的生产级应用指南

    Kubernetes核心组件实战解析之API Server与Scheduler的生产级应用指南

    在Kubernetes集群中,kube-apiserver和kube-scheduler如同机场的塔台控制系统,一个负责全局通信调度,一个专注资源分配优化,本文将深入解析这两个核心组件在生产环境中的关键作用与实战配置,需要的朋友可以参考下
    2025-03-03
  • 关于NetworkPolicy工作原理解读

    关于NetworkPolicy工作原理解读

    NetworkPolicy是Kubernetes中用于控制Pod间网络流量的资源对象,依赖于支持NetworkPolicy的CNI插件来实现流量控制,它通过定义入口和出口规则来允许或拒绝Pod间的通信,实现网络微分段,保障集群网络安全,NetworkPolicy遵循“默认拒绝,显式允许”的原则
    2025-10-10

最新评论