仅当Kubernetes命名空间为';是空的吗?

仅当Kubernetes命名空间为';是空的吗?,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我使用Helm将应用程序的多个“组件”部署到单个名称空间中,并使用Jenkins触发创建和销毁作业。我似乎无法使用Helm删除名称空间,因此我希望只使用Kubernetes命令 但是,如果我使用kubectl delete namespace,它将强制销毁名称空间及其所有资源 我只想在名称空间为空时销毁它。有这样的命令吗 我只想在名称空间为空时销毁它。有命令吗 这样做 不,没有这样的命令。这种行为是故意的 我建议采用不同的方法。对于包括名称空间在内的所有组件,您应该在版本控制系统中拥有所有部署Y

我使用Helm将应用程序的多个“组件”部署到单个名称空间中,并使用Jenkins触发创建和销毁作业。我似乎无法使用Helm删除名称空间,因此我希望只使用Kubernetes命令

但是,如果我使用
kubectl delete namespace
,它将强制销毁名称空间及其所有资源

我只想在名称空间为空时销毁它。有这样的命令吗

我只想在名称空间为空时销毁它。有命令吗 这样做

不,没有这样的命令。这种行为是故意的


我建议采用不同的方法。对于包括名称空间在内的所有组件,您应该在版本控制系统中拥有所有部署YAML。当您想要创建use
kubectl create-f deployment.yaml
和删除use
kubectl delete-f deployment.yaml
时,您可以运行
kubectl get all--namespace YOUR_namespace
,然后依赖于输出调用delete namespace

在删除之前没有简单的命令检查名称空间,它需要一些kubectl脚本或KubeAPI客户端

从github问题讨论
get all
s限制一个示例并添加一些jq处理,您可以得到一个(慢)命令,除非它成功地找到所有资源类型,否则错误都是空的(无
):


试试这个,最好迭代KubeAPI资源,这将给出名称空间中的每个资源列表

kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n 1 kubectl get --show-kind --ignore-not-found -l <label>=<value> -n 
<namespace>
kubectl api资源--verbs=list--namespaced-o name\
|xargs-n1 kubectl get--show kind--ignore not found-l=-n
还是另一种方法

kubectl api-resources --verbs=list --namespaced -o name | `
%{ kubectl get $_ --show-kind --ignore-not-found -l <label>=<value> -n 
<namespace> }
kubectlapi资源--verbs=list--namespaced-o name |`
%{kubectl get$\显示种类--忽略找不到-l=-n
}

不幸的是
全部获取
全部:/yeah这就是我现在所做的,但是意识到它实际上并没有输出全部:(你可以使用它来真正获取全部。
kubectl api-resources --verbs=list --namespaced -o name | `
%{ kubectl get $_ --show-kind --ignore-not-found -l <label>=<value> -n 
<namespace> }