我正在寻找一种方法来做类似的事情
kubectl get pods -l app=foo | kubectl delete
我认为这是一个同时处理多个资源的好方法,但我找不到一个相当简单的方法。
您可以使用命令替换:
Kubectl delete $(kubectl get pod -l app=foo -o name)
kubectl get -o name
将以kind/name
格式写出资源名称,一行一个。您可以将其与xargs(1(等工具结合使用,以运行您建议的管道。
kubectl get job -l app=foo -o name | xargs kubectl delete
# help we're using the long-format label names and I don't remember
# what goes after `kubectl get -l`
kubectl get job -o name | grep foo | xargs kubectl delete
对于您显示的非常具体的命令,我经常发现使用kubectl rollout restart
来触发部署的重新部署序列更容易,而无需实际进行任何更改。这将删除Deployment管理的所有pod,但仅在首先创建新pod之后;因此,您可以重新启动行为不端的Pods,但不会真正关闭整个应用程序。
kubectl rollout restart deployment/foo