前言
我们在删除一个非空的NS时,由于资源未被释放,可能造成该名称空间一直处于Terminating 状态;这是由于该名称空间下仍有资源造成的,且无法通过强制删除解决,接下来,我将做一个场景再现。
一、场景再现
1、删除system-monitoring命名空间
通过上述的验证,目前这个ns已经夯住了 ,通过常用命令已经无法进行删除,那么接下来,我们使用另一种方法进行解决。
2、导出ns并修改其内容
kubectl get ns system-monitoring -o json > monitoring.json
通过此命令将名称空间以json文件的形式导出,并手动删除spec下的内容,这一部主要目的在于:将用空的内容覆盖原有的名称空间,然后再进行删除就不会阻塞了。
删除前:
删除后:
3、通过空的ns进行覆盖
将导出的内容为空的ns,通过api-server 接口覆盖到当前集群中,默认我们的api-server是通过加密访问的 ,那么我们直接进行覆盖操作会报404,如下图
curl -k -H "Content-Type: application/json" -X PUT --data-binary @monitoring.json https://127.0.0.1:6443/api/v1/namespaces/monitoring/finalize
kubectl proxy --port=8081
curl -k -H "Content-Type: application/json" -X PUT --data-binary @monitoring.json http://127.0.0.1:8081/api/v1/namespaces/monitoring/finalize
小知识:
kubectl proxy是一个Kubernetes命令行工具,用于创建一个本地代理服务器,将本地端口与Kubernetes集群中的API Server进行连接。
二、k8s删除资源的原理 – 待补充
1.
2.
三、总结 – 待补充
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。