kubernetes - Kubernetes 命名空间停留在终止状态
问题描述
我们有一个集群,其中似乎永远不想完全删除命名空间,现在无法重新创建自定义指标命名空间来收集自定义指标以正确设置 HPA。我完全理解我可以使用所有自定义指标资源创建另一个命名空间,但有点担心集群的整体健康状况,因为命名空间陷入“终止”状态
$ kubectl get ns
NAME STATUS AGE
cert-manager Active 14d
custom-metrics Terminating 7d
default Active 222d
nfs-share Active 15d
ingress-nginx Active 103d
kube-public Active 222d
kube-system Active 222d
lb Terminating 4d
monitoring Terminating 6d
production Active 221d
我已经尝试将命名空间导出到 JSON,删除终结器并使用编辑过的 JSON 文件重新创建。还尝试 kubectl 编辑 ns custom-metrics 并删除“-kubernetes”终结器。一切都无济于事。
有人对我如何尝试销毁这些“卡住”的命名空间有任何其他建议吗?
curl to https://master-ip/api/v1/namespace/...../finalize对我来说似乎不适用于 Google Kubernetes Engine,我假设 GKE 集群上不允许这些操作
尝试类似的事情也不起作用:
$ kubectl delete ns custom-metrics --grace-period=0 --force
警告:立即删除不会等待确认正在运行的资源已终止。该资源可能会无限期地继续在集群上运行。来自服务器的错误(冲突):无法在命名空间“custom-metrics”上完成操作:系统正在确保从此命名空间中删除所有内容。完成后,系统会自动清除此命名空间。
并且此命名空间中根本没有列出任何资源:
kubectl get all -n custom-metrics
或循环遍历此命名空间中的所有 api-resources 显示根本不存在资源:
kubectl api-resources --namespaced=true -o name | xargs -n 1 kubectl get -n custom-metrics
解决方案
我做了类似于 rahul.tripathi 的事情,除了 curl 对我不起作用 - 我跟着https://medium.com/@craignewtondev/how-to-fix-kubernetes-namespace-deleting-stuck-in-terminating-state- 5ed75792647e执行以下操作:
NAMESPACE=
kubectl get namespace $NAMESPACE -o json > $NAMESPACE.json
sed -i -e 's/"kubernetes"//' $NAMESPACE.json
kubectl replace --raw "/api/v1/namespaces/$NAMESPACE/finalize" -f ./$NAMESPACE.json
瞧!命名空间被删除
推荐阅读
- flutter - Firestore 安全规则:更新已禁用,但更新完美
- c++ - 诊断未定义参考错误的来源
- c# - 如何在引导模式中触发 ASP.Net 核心模型验证和远程属性
- python - 获取重叠矩形的边界
- c++ - opengl没有画一些三角形
- java - 如何在soap WS中打印输出请求XML?
- python - 有什么方法可以添加使用 Eel Python 制作的 GUI 应用程序的 logo 吗?
- python - PyQt5 不会在标签中显示图片
- python - 如何解决此类型错误?TypeError:“int”对象不可下标
- java - JMeter Selenium Web 驱动程序集成问题