我正在寻找一种方法来做类似的事情
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;这样你就可以得到重新启动行为不当的 Pod 的效果,但实际上并没有关闭整个应用程序。
kubectl rollout restart deployment/foo
最简单的方法是
kubectl get pods -l app=foo -o yaml | kubectl delete -f -
第一部分将获取所有带有标签
app: foo
的 pod,并将它们以 yaml 格式输出到 stdout。然后我们将该输出通过管道传输到 kubectl delete -f
,其中 -
是 stdin 的同义词。