获取有关要在Kubernetes中删除的资源的警告

获取有关要在Kubernetes中删除的资源的警告,kubernetes,devops,Kubernetes,Devops,与其使用Kubernetes的default名称空间,不如为每个应用程序或基础结构的每个逻辑组件创建单独的名称空间 OReilly的“Kubernetes云原生DevOps”强调了一个相关的潜在风险: 您可以将名称空间用作一种临时虚拟集群,并在完成后删除名称空间。但是要小心!删除命名空间将删除其中的所有资源。您确实不想对错误的命名空间运行该命令。 (...) 所以不要删除名称空间,除非它们确实是临时的,并且您确定它们不包含任何生产资源 在关于名称空间的文章中,我看到了类似的警告: 警告:这将删除

与其使用Kubernetes的
default
名称空间,不如为每个应用程序或基础结构的每个逻辑组件创建单独的名称空间

OReilly的“Kubernetes云原生DevOps”强调了一个相关的潜在风险:

您可以将名称空间用作一种临时虚拟集群,并在完成后删除名称空间。但是要小心!删除命名空间将删除其中的所有资源。您确实不想对错误的命名空间运行该命令。 (...) 所以不要删除名称空间,除非它们确实是临时的,并且您确定它们不包含任何生产资源

在关于名称空间的文章中,我看到了类似的警告:

警告:这将删除命名空间下的所有内容

当然,我们需要小心,但这是一个可怕的想法,资源可以删除这么容易。 是否有任何方法可以获得有关哪些资源将被删除的警告:
kubectl delete namespace

没有获取警告的本机方法。您可以使用下面的命令检查名称空间中的所有资源。当名称空间被删除时,该名称空间中的所有资源都将被删除

kubectl get all -n namespacename

另一个最佳实践是将kubernetes YAML保存在git等版本控制系统中,以便在错误删除时再次应用它们。

删除命名空间时,此命名空间中的所有命名空间资源都将被删除。没有直接的方法列出名称空间中的所有资源(
kubectl get all
只列出一组选定的资源)

但是,您可以使用以下方法枚举所有命名空间资源类型:

kubectl获取api资源--namespaced=true 然后,您可以使用
kubectl get
遍历这些资源类型,并检查命名空间中是否有它们的实例

例如,以下命令列出
ns name
命名空间中的所有资源:

以美元表示的r的
(kubectl api资源--namespaced=true--无头2>/dev/null | cut-d'-f1);做
kubectl获取“$r”-n ns name--无标题-o自定义列=:.metadata.name | sed“s/^/$r/”
完成

这是当您删除
ns name
命名空间时将被删除的所有资源。

Get all
并没有真正显示所有资源,只是最常见的类型。但这就足够了,谢谢:)