Kubernetes(K8S)中强制删除命名空间的实现方式

 更新时间:2026年01月28日 14:14:56   作者:ICT董老师  
本文介绍了在Kubernetes中删除处于Terminating状态的命名空间mysql-operator的步骤,包括检查并清理残留资源、强制删除命名空间等方法

当 Kubernetes 中的命名空间 mysql-operator 一直处于 Terminating 状态无法删除时,通常是由于资源未被正确清理或 finalizers 未完成导致的。

以下是分步骤的解决方案:

一、检查并清理残留资源

1. 列出命名空间下的所有资源

kubectl get all --namespace=mysql-operator
#检查是否有未被删除的 Pod、Deployment、Service、PVC 等资源。

2. 手动删除残留资源

#如果发现残留资源,逐个删除:
kubectl delete pod <pod-name> -n mysql-operator
kubectl delete deployment <deployment-name> -n mysql-operator
kubectl delete service <service-name> -n mysql-operator
kubectl delete pvc <pvc-name> -n mysql-operator
#重复此操作直至所有资源被清除。

二、强制删除命名空间(终极方案)

如果清理残留资源后仍无法删除命名空间,可能是 finalizers 未完成导致的。此时需通过编辑命名空间配置来强制删除。

1. 导出命名空间配置

kubectl get namespace mysql-operator -o json > mysql-operator.json

2. 编辑 JSON 文件

使用文本编辑器打开 mysql-operator.json,找到 spec.finalizers 字段(通常为 [“kubernetes”]),将其清空:

json
"spec": {
  "finalizers": []
}

3. 通过 API 强制删除

启动 kubectl proxy 以访问 API 服务器:

kubectl proxy --port=8001 &
#使用 curl 提交修改后的 JSON 文件:
curl -k -H "Content-Type: application/json" -X PUT --data-binary @mysql-operator.json http://localhost:8001/api/v1/namespaces/mysql-operator/finalize

4. 验证删除结果

kubectl get namespace mysql-operator
#如果命名空间已消失,说明删除成功。

#强制删除pod
kubectl delete pod mycluster-0 --grace-period=0 --force
kubectl patch pod mycluster-0 -p '{"metadata":{"finalizers":null}}' --type=merge

#通过 patch 命令强制移除InnoDBCluster资源:
kubectl patch innodbcluster <cluster-name> -n <namespace> --type=json -p='[{"op": "remove", "path": "/metadata/finalizers"}]'
docker system prune -a
volumes:
- name: datadir
persistentVolumeClaim:
claimName: datadir-mycluster-0

datadirVolumeClaimTemplate

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • k8s中如何实现pod自动扩缩容详解

    k8s中如何实现pod自动扩缩容详解

    在实际生产系统中,经常会遇到某个服务需要扩容的场景,可能会遇到由于资源紧张或者工作负载降低而需要减少服务实例数量的场景,下面这篇文章主要给大家介绍了关于k8s中如何实现pod自动扩缩容的相关资料,需要的朋友可以参考下
    2022-08-08
  • 解决K8S中Node状态为NotReady的步骤

    解决K8S中Node状态为NotReady的步骤

    在Kubernetes集群中,Node状态为NotReady通常意味着节点上存在某些问题,解决Node节点NotReady状态的步骤包括检查节点日志、容器运行时状态、网络组件、节点资源、节点与控制平面的通信,本文介绍解决K8S中Node状态为NotReady的步骤,感兴趣的朋友一起看看吧
    2025-03-03
  • Windows下安装并使用kubectl查看K8S日志的操作方法

    Windows下安装并使用kubectl查看K8S日志的操作方法

    本文给大家介绍Windows下安装并使用kubectl查看K8S日志的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友安康下吧
    2025-06-06
  • 解决k8s namespace 一直处于 Terminating 状态的问题

    解决k8s namespace 一直处于 Terminating 状态的问题

    这篇文章主要介绍了k8s namespace 一直处于 Terminating 状态的解决方法,以下的 tool 为 Terminating 状态的 namespace,下面相关的一些操作记得将 tool 修改成自己的 namespace 名称,需要的朋友可以参考下
    2022-10-10
  • Jenkins打包、发布、部署完整骤记录

    Jenkins打包、发布、部署完整骤记录

    这篇文章主要介绍了Jenkins的基本概念,服务器环境检查,以及如何安装和配置Jenkins,包括安装FTP服务、Maven、Git和Jenkins本身,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • k8s常用命令大全(最新推荐)

    k8s常用命令大全(最新推荐)

    这篇文章主要介绍了k8s常用命令大全,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Kubernetes DNS解析实战过程

    Kubernetes DNS解析实战过程

    Kubernetes中,Pod需Ready状态才会被CoreDNS解析,而Service创建时即添加记录,当服务依赖Pod解析时易引发启动死循环,通过设置Service的publishNotReadyAddresses为true,可解决此问题,允许未就绪Pod的IP立即被解析
    2025-09-09
  • Kubernetes之Pod的调度实现方式

    Kubernetes之Pod的调度实现方式

    Kubernetes通过定向调度(NodeName/NodeSelector)、亲和性调度(NodeAffinity/PodAffinity/PodAntiAffinity)及污点容忍(Taints/Toleration)实现Pod节点控制,分别用于强制指定节点、优化部署位置和灵活管理节点准入,满足不同场景下的调度需求
    2025-09-09
  • Rainbond功能架构及应用管理官方文档介绍

    Rainbond功能架构及应用管理官方文档介绍

    这篇文章主要为大家介绍了Rainbond功能机构及使用官方文档,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • KVM虚拟化技术之virt-manager使用及KVM虚拟化平台网络模型介绍

    KVM虚拟化技术之virt-manager使用及KVM虚拟化平台网络模型介绍

    这篇文章主要介绍了KVM虚拟化技术之virt-manager使用及KVM虚拟化平台网络模型介绍,需要的朋友可以参考下
    2016-10-10

最新评论