我们在 aks 中有一个集群。我们在 consul 命名空间中部署了 consul helm chart。它创建了许多 CRD。
使用这些 CRD 在内部创建了另一个命名空间应用程序
当我们删除领事时,它也被删除了。
然后,当我们尝试删除应用程序时,它会长时间停留在终止状态。
因此,关联并删除了命名空间。
现在,当我运行“ kubectl get ns
”时,它没有显示。
kubectl get serviceintentions -n applicationns
NAME SYNCED LAST SYNCED AGE
servi1 True 41d 42d
servi2 True 41d 42d
servi3 True 41d 42d
请建议如何清理,有很多类似的 CRD。也不删除。
答案1
按照如何强制删除 Kubernetes 命名空间清理命名空间。
按照文档操作后,如果您发现即使删除命名空间后自定义 CRD 仍未被删除,请按照以下步骤操作:
执行kubectl 获取 crd -A -o jsonpath='{.items[*].metadata.finalizers'检查删除操作是否与 CRD 上设置的终结器陷入死锁。
在这种情况下,您可以执行以下操作:
$ kubectl patch crd <custom-resource-definition-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge
$ kubectl delete crd <custom-resource-definition-name> -n <namespace>
如果您无法按照上述步骤删除 CRD,则请使用以下命令手动编辑 CRD,并从 CRD 中删除 finalizer 部分,以便直接删除它。
$ kubectl edit crd <CRD-Name>
要批量删除当前命名空间上下文中的所有资源,可以执行带有 -all 标志的 kubectl delete 命令。
$ kubectl delete --all
要从特定命名空间删除所有资源,请使用 -n 标志和 delete all 命令。
$ kubectl delete all -n <namespace-name> --all
要从所有命名空间中删除所有资源,我们可以使用 -A 标志。
$ kubectl delete -A