二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Nexus系列文章

  • Jenkins系列文章

  • ELK笔记

  • Kubernetes笔记

    • 手动部署kubernetes-1-8-6集群

    • 其他姿势快速部署

    • 手动搭建k8s-1-10-4高可用集群(推荐版).md

    • 基础学习

    • 从新出发

      • 通过kubedog助力应用部署的状态监测与打印
      • k8s集群接入了kubegems之后删除namespace报错kubegems-local-controller-webhook-not-found
      • k8s删除namespace之后状态一直为Terminating
      • kubectl-krew插件离线安装方案(保你成功)
  • LLM专题

  • 系列专题
  • Kubernetes笔记
  • 从新出发
二丫讲梵
2023-07-15

k8s删除namespace之后状态一直为Terminating

文章发布较早,内容可能过时,阅读注意甄别。

使用 k8s 时,执行如下命令删除一个 namespace:

$ kubectl delete ns local
1

随后查看该 ns 的状态,可以看到该 ns 始终保持在 Terminating 状态:

$ kubectl get ns local

NAME    STATUS        AGE
local   Terminating   3d1h
1
2
3
4

如果出现这种问题,一般情况下都是finalizers字段捣的鬼。

参看这篇文章:熟悉又陌生的 k8s 字段:finalizers (opens new window) 可以了解到:

Finalizers 字段属于 Kubernetes GC 垃圾收集器,是一种删除拦截机制,能够让控制器实现异步的删除前(Pre-delete)回调。其存在于任何一个资源对象的  Meta (opens new window)  中,在 k8s 源码中声明为  []string,该 Slice 的内容为需要执行的拦截器名称。

通常删除不掉可能是因为集群内有某些 webhook,从而导致这个问题,如果此时该 webhook 并不能确定是否可以删除,那么网上提到的,直接编辑 ns,删除 finalizers 的值是无法解决的,仍旧会遇到如下报错:

$ kubectl edit ns local

error: namespaces "local" could not be patched: Internal error occurred: failed calling webhook "rancherauth.cattle.io": Post "https://rancher-webhook.cattle-system.svc:443/v1/webhook/validation?timeout=10s": no endpoints available for service "rancher-webhook"
You can run `kubectl replace -f /tmp/kubectl-edit-550962354.yaml` to try this update again.
1
2
3
4

这个时候,可以参考此文档的方案解决:移除該死的 Terminating Namespace (opens new window)

上边文档最后留了一个脚本,用于删除这种状态的 namespace 的 finalizers 字段,因为脚本还缺了一些内容,因此调整之后补充如下:

#!/bin/bash
if [[ $# -ne 1 ]]; then
echo "Please input only namespace name"
exit 1
fi
ns=$1
kubectl get ns ${ns} -o json > tmp.json
cat ./tmp.json | jq 'del(.spec.finalizers[])' > ./modify.json
cat ./tmp.json | jq 'del(.metadata.finalizers[])' > ./modify.json
kubectl replace --raw "/api/v1/namespaces/${ns}/finalize" -f ./modify.json
rm -f tmp.json modify.json
1
2
3
4
5
6
7
8
9
10
11

然后执行脚本,将名称空间放在第一个位置参数即可:bash remove-ns.sh local。

1689427249424

微信 支付宝
上次更新: 2024/09/26, 21:41:44
k8s集群接入了kubegems之后删除namespace报错kubegems-local-controller-webhook-not-found
kubectl-krew插件离线安装方案(保你成功)

← k8s集群接入了kubegems之后删除namespace报错kubegems-local-controller-webhook-not-found kubectl-krew插件离线安装方案(保你成功)→

最近更新
01
学习周刊-总第209期-2025年第18周
05-03
02
学习周刊-总第208期-2025年第17周
04-24
03
Go开发实践之Gin框架将前端的dist目录embed到二进制
04-22
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式