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多节点master部署过程

    k8s多节点master部署过程

    这篇文章主要介绍了k8s多节点master部署过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • K8S单节点部署及集群部署过程

    K8S单节点部署及集群部署过程

    这篇文章主要介绍了K8S单节点部署及集群部署过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 在CentOS上如何安装Singularity高性能容器

    在CentOS上如何安装Singularity高性能容器

    Singularity是劳伦斯伯克利国家实验室专门为大规模、跨节点HPC和DL工作负载而开发的容器化技术,具备轻量级、快速部署、方便迁移等优势,且支持从Docker镜像格式转换为Singularity镜像格式,本文给大家介绍在CentOS上如何安装Singularity高性能容器,感兴趣的朋友一起看看吧
    2024-05-05
  • K8S中若要挂载其他命名空间中的 Secret操作方法

    K8S中若要挂载其他命名空间中的 Secret操作方法

    在Kubernetes中,通过创建ServiceAccount和RoleBinding,可以实现一个命名空间中的Pod挂载另一个命名空间中的Secret,以下是具体步骤和示例代码,包括创建ServiceAccount、Role和RoleBinding,以及在Pod中使用这些资源挂载Secret,感兴趣的朋友一起看看吧
    2025-03-03
  • Rainbond云原生快捷部署生产可用的Gitlab步骤详解

    Rainbond云原生快捷部署生产可用的Gitlab步骤详解

    这篇文章主要为大家介绍了Rainbond云原生快捷部署生产可用的Gitlab步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • 云原生系列Kubernetes深度解析YAML文件使用

    云原生系列Kubernetes深度解析YAML文件使用

    这篇文章主要为大家介绍了云原生系列Kubernetes深度解析YAML文件使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Istio 自动注入 sidecar 失败导致无法访问webhook服务的解决方法

    Istio 自动注入 sidecar 失败导致无法访问webhook服务的解决方法

    最近工作中在部署Istio环境的过程中发现官方示例启动的pod不能访问不到Istio的webhook,这个问题也是困扰了我一天,我把他归类到sidecar注入失败的情况下,本文给大家分享问题解决方法,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • 如何使用Kubernetes自定义资源(CRD)详解

    如何使用Kubernetes自定义资源(CRD)详解

    自定义资源定义(CRD)是Kubernetes API扩展,可以定义新的对象类型,下面这篇文章主要给大家介绍了关于如何使用Kubernetes自定义资源(CRD)的相关资料,需要的朋友可以参考下
    2022-09-09
  • K8S Helm应用部署与依赖治理实战教程

    K8S Helm应用部署与依赖治理实战教程

    文章阐述了Kubernetes部署中的三大挑战(环境配置漂移、版本回退失控、依赖治理低效),并介绍Helm通过声明式模板、版本控制与依赖管理实现标准化配置、环境隔离和版本回滚,提升部署效率与可靠性,对K8S Helm应用部署相关知识感兴趣的朋友一起看看吧
    2025-07-07
  • ES业务数据迁移遇到的精度问题BUG

    ES业务数据迁移遇到的精度问题BUG

    这篇文章主要为大家介绍了ES业务数据迁移遇到的BUG精度问题,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06

最新评论