我有一个“卡住”的名称空间,我删除显示在这个永恒的“终止”状态。
当前回答
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json 127.0.0.1:8001/k8s/clusters/c-mzplp/api/v1/namespaces/rook-ceph/finalize
这对我来说很有效,命名空间消失了。
详细的解释可以在https://github.com/rook/rook/blob/master/Documentation/ceph-teardown.md链接中找到。
这发生在我中断kubernetes安装(Armory Minnaker)时。然后我继续删除名称空间并重新安装它。由于终结器的原因,我被困在豆荚的终止状态中。我把命名空间放到了tmp中。Json,从tmp删除终结器。Json文件,并执行curl命令。 解决这个问题后,我使用脚本卸载集群以消除残留,并重新安装。
其他回答
kubectl edit namespace ${stucked_namespace}
然后在vi模式下删除终结器并保存。
这对我来说是有效的。
假设你已经尝试过强制删除资源,比如: Pods卡在终止状态,你在你的智慧的尽头试图恢复命名空间…
您可以强制删除命名空间(可能会留下悬空资源):
(
NAMESPACE=your-rogue-namespace
kubectl proxy &
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize
)
这是对这里的答案的改进,它是基于这里的评论。 我正在使用jq实用程序以编程方式删除终结器部分中的元素。你可以手动来做。 Kubectl代理默认在127.0.0.1:8001上创建监听器。如果您知道集群主机的主机名/IP,则可以使用该主机名/IP。 有趣的是,即使使用kubectl编辑器进行相同的更改也没有效果,这种方法似乎仍然有效。
请尝试以下命令:
kubectl patch ns <your_namespace> -p '{"metadata":{"finalizers":null}}'
这是由于名称空间控制器无法删除名称空间中仍然存在的资源。
这个命令(使用kubectl 1.11+)将显示名称空间中保留的资源:
kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace>
一旦找到并解析并删除这些名称空间,该名称空间就会被清理
调试类似的问题。
有两件重要的事情需要考虑:
1)在从命名空间中删除终结器之前要三思,因为可能有一些资源您不想自动删除,或者至少要了解为了排除故障而删除了哪些资源。
2)像kubectl api-resources——verbs=list这样的命令可能不会提供由外部crds创建的资源。
在我的例子中:
我用kubectl编辑ns <ns-name>,在状态->条件下,我看到我安装的一些外部crds未能被删除,因为它们添加了定义的终结器:
- lastTransitionTime: "2021-06-14T11:14:47Z"
message: 'Some content in the namespace has finalizers remaining: finalizer.stackinstall.crossplane.io
in 1 resource instances, finalizer.stacks.crossplane.io in 1 resource instances'
reason: SomeFinalizersRemain
status: "True"
type: NamespaceFinalizersRemaining
推荐文章
- Printf与std::字符串?
- Kubectl连续日志
- 我的kubernetes豆荚不断崩溃与“CrashLoopBackOff”,但我找不到任何日志
- 如何从kubectl配置中删除集群和上下文?
- Kubernetes支持多个环境(Staging、QA、生产等)
- CSS中*和*|*的区别是什么?
- Kubernetes API -获取特定节点上的pod
- 我如何调试“ImagePullBackOff”?
- Django:“projects”vs“apps”
- 在Kubernetes中更新configmap时重新启动pod ?
- 输入对象的datetime。Datetime没有Datetime属性
- 为部署的Kubernetes服务获取YAML ?
- 如何在kubernetes中切换命名空间
- \(反斜杠)在PHP(5.3+)中做什么?
- 位于另一个名称空间中的服务