我正在使用Helm将应用程序的多个“组件”部署到单个命名空间中,并使用Jenkins触发创建和销毁作业。似乎我无法使用Helm删除名称空间,因此我只想使用Kubernetes命令。
但是,似乎如果我使用kubectl delete namespace
,它将强行销毁名称空间及其所有资源。
我只想破坏命名空间为空。有命令执行此操作吗?
答案 0 :(得分:2)
我只想在名称空间为空时销毁它。有命令吗 为此吗?
没有命令可以这样做。此行为是设计使然。
我建议采用另一种方法。对于所有组件(包括名称空间),您都应在版本控制系统中拥有所有部署Yaml。当您要创建时,请使用kubectl create -f deployment.yaml
,而当您要删除时,请使用kubectl delete -f deployment.yaml
答案 1 :(得分:1)
您可以运行kubectl get all --namespace YOUR_NAMESPACE
,然后根据输出调用删除命名空间
答案 2 :(得分:0)
没有一个简单的命令可以在删除之前检查名称空间,它需要一些kubectl脚本或kube API客户端。
从讨论get all
的局限性liggit provides的github问题开始,并添加了一些jq处理,您可以得到一个(slow)命令,该命令出错,除非成功地找到所有资源类型都是空的(没有{{ 1}}):
items
答案 3 :(得分:0)
尝试一下,更好地遍历kube-api资源,这将在命名空间中提供每个资源列表。
$itemsCart = cart::where('token_user', session()->get('_token') )->where('id_encomenda', 0)->get();
foreach ( $itemsCart as $items ) {
$encomendas_detalhes = new detalhes;
$encomendas_detalhes->id_encomenda = $encomendas->id;
$encomendas_detalhes->id_produto = ---$itemsCart->id_produto--- ;
$encomendas_detalhes->quantidade = 2;//$itemsCart->quantidade;
$encomendas_detalhes->total = $total;
$encomendas_detalhes->save();
$items->id_encomenda = $id_encomenda;
$items->save();
}
或其他方法
kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n 1 kubectl get --show-kind --ignore-not-found -l <label>=<value> -n
<namespace>