我正在编写一个脚本,以删除多个命名空间中的多个pod。 该过程是先标记所有要删除的Pod,然后使用kill = true之类的标签,然后将其全部删除。
脚本如下:
kubectl label pods pod0 kill=true -n namespace0
kubectl label pods pod1 kill=true -n namespace0
kubectl label pods pod0 kill=true -n namespace1
kubectl label pods pod1 kill=true -n namespace1
......
kubectl delete pod -l kill=true --all-namespaces
执行最后一个脚本时,回显文本如下:
pod "pod0" deleted
pod "pod1" deleted
pod "pod0" deleted
pod "pod1" deleted
......
我将按脚本为每一行插入时间戳,因为我需要知道每行被杀死的确切时间。但是问题是我无法确定哪个吊舱被完全杀死,因为没有显示名称空间,并且有多个具有相同名称的吊舱。
因此我的问题如下:
答案 0 :(得分:1)
为什么不编写一个小脚本来获取所有名称空间并迭代每个名称空间并删除带有标签kill = true的Pod。
您可以在每次迭代时回显名称空间。
答案 1 :(得分:1)
如@P Ekambaram所述,您可以为每个名称空间条目调用pod删除操作,显示每个处理迭代操作的目标名称空间:
kubectl get ns | awk '{print $1}'| sed '1d'| while read -r namespace; do echo "Namespace: $namespace"; kubectl delete po -l kill=true -n $namespace; done
希望您发现它对您的研究有用。
答案 2 :(得分:1)
- 是否可以使kubectl在回显文本中显示名称空间?
不,我认为这是在kubectl中硬编码的。
- 如果没有,kubectl是否以某种方式保证删除顺序?像按名称空间,吊舱名称排序一样?
命名空间中的Pod可能会按字母顺序删除,但是 不能保证 。命名空间也可能按照字母顺序进行迭代,但是, 不保证 也是这样。简而言之,它在实践中可能以某种方式起作用,但不能保证您可以依靠。
此外,如果您需要知道删除每个吊舱的确切时间,最好还是遍历所有吊舱并明确删除每个吊舱。