删除命名空间卡在 "Terminating" 状态
Deleting namespace was stuck at "Terminating" State
我想删除在 kubernetes 中创建的命名空间。
我执行的命令:
kubectl delete namespaces devops-ui
但是这个过程花费的时间太长(~20 分钟)并且还在计算中。
在检查 minikube 仪表板时,一个 pod 仍然存在,但没有被删除,它处于终止状态。
有什么解决办法吗?
请先使用以下命令删除 pods
kubectl delete pod pod_name_here --grace-period=0 --force --namespace devops-ui
现在删除命名空间
kubectl delete namespaces devops-ui
- 当您删除命名空间时,它会触发删除该命名空间内的所有实体
- 您可以 运行 "kubectl get all -n namespace-name" 并查看命名空间中所有组件的状态
- 理想情况下,最好等待所有 pods 被彻底删除(而不是使用 --grace-period=0 强制删除 pod:这只会删除 pod 的 etcd 记录 - 但是相应的容器可以是 运行ning)
参考:https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
一些 CRD 有终结器,这将防止命名空间终止
示例来自此处
https://github.com/kubernetes/kubernetes/issues/60807#issuecomment-408599873
@ManifoldFR , I had the same issue as yours and I managed to make it work by making an API call with json file .
kubectl get namespace annoying-namespace-to-delete -o json > tmp.json
then edit tmp.json and remove"kubernetes"
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://kubernetes-cluster-ip/api/v1/namespaces/annoying-namespace-to-delete/finalize
注意 - 使用这个 https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/ - 如果你是 运行 测试集群并且需要获得 cluster-api 访问权限
在我的例子中,它抛出了持有的资源(在默认命名空间中)
{
"type": "NamespaceContentRemaining",
"status": "True",
"lastTransitionTime": "2020-10-09T09:35:11Z",
"reason": "SomeResourcesRemain",
"message": "Some resources are remaining: cephblockpools.ceph.rook.io has 2 resource instances, cephclusters.ceph.rook.io has 1 resource instances"
},
{
"type": "NamespaceFinalizersRemaining",
"status": "True",
"lastTransitionTime": "2020-10-09T09:35:11Z",
"reason": "SomeFinalizersRemain",
"message": "Some content in the namespace has finalizers remaining: cephblockpool.ceph.rook.io in 2 resource instances, cephcluster.ceph.rook.io in 1 resource instances"
}
]
我想删除在 kubernetes 中创建的命名空间。 我执行的命令:
kubectl delete namespaces devops-ui
但是这个过程花费的时间太长(~20 分钟)并且还在计算中。
在检查 minikube 仪表板时,一个 pod 仍然存在,但没有被删除,它处于终止状态。
有什么解决办法吗?
请先使用以下命令删除 pods
kubectl delete pod pod_name_here --grace-period=0 --force --namespace devops-ui
现在删除命名空间
kubectl delete namespaces devops-ui
- 当您删除命名空间时,它会触发删除该命名空间内的所有实体
- 您可以 运行 "kubectl get all -n namespace-name" 并查看命名空间中所有组件的状态
- 理想情况下,最好等待所有 pods 被彻底删除(而不是使用 --grace-period=0 强制删除 pod:这只会删除 pod 的 etcd 记录 - 但是相应的容器可以是 运行ning)
参考:https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
一些 CRD 有终结器,这将防止命名空间终止
示例来自此处 https://github.com/kubernetes/kubernetes/issues/60807#issuecomment-408599873
@ManifoldFR , I had the same issue as yours and I managed to make it work by making an API call with json file .
kubectl get namespace annoying-namespace-to-delete -o json > tmp.json
then edit tmp.json and remove"kubernetes"
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://kubernetes-cluster-ip/api/v1/namespaces/annoying-namespace-to-delete/finalize
注意 - 使用这个 https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/ - 如果你是 运行 测试集群并且需要获得 cluster-api 访问权限
在我的例子中,它抛出了持有的资源(在默认命名空间中)
{
"type": "NamespaceContentRemaining",
"status": "True",
"lastTransitionTime": "2020-10-09T09:35:11Z",
"reason": "SomeResourcesRemain",
"message": "Some resources are remaining: cephblockpools.ceph.rook.io has 2 resource instances, cephclusters.ceph.rook.io has 1 resource instances"
},
{
"type": "NamespaceFinalizersRemaining",
"status": "True",
"lastTransitionTime": "2020-10-09T09:35:11Z",
"reason": "SomeFinalizersRemain",
"message": "Some content in the namespace has finalizers remaining: cephblockpool.ceph.rook.io in 2 resource instances, cephcluster.ceph.rook.io in 1 resource instances"
}
]