在命名空间中针对所有部署使用 kubectl rollout status 命令的状态。

11

我在我的命名空间中有多个部署对象。我想同时运行kubectl rollout status以检查它们的状态。因此,我希望该命令只有当所有部署完成或发生错误时才退出。我该如何实现这一点?

到目前为止,我唯一得到的是:

kubectl get deploy -o name | xargs -n1 -t kubectl rollout status

但我希望有更聪明的解决方案。


我认为你不能这么做。 - suren
这些部署是否相关联?如果是的话,定义一个Helm图表可能是有意义的。 - Blokje5
部署在helm图表中,但我没有在helm图表上使用--wait,因为它有一个bug -> https://github.com/helm/helm/issues/3173 - LIvanov
2个回答

7
您可以使用以下简单的检查方法:
#!/bin/bash
deploy=$(kubectl get deploy -o name)
for i in $deploy; do kubectl rollout status $i -w --timeout=30s; done

您还可以使用此帖子中的线索构建更高级的脚本。


5
所以我想我提出的方案是最好的。
kubectl get deploy --output name | \
  timeout -t 300 \
    xargs -n1 -t \
      kubectl rollout status

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接