如何清理 kubernetes 中的命名空间?

如何清理 kubernetes 中的命名空间?

我们在 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

相关内容