繁体   English   中英

如何让 bash 脚本等到 kubernetes pod 重新启动?

[英]How do I make bash script wait until kubernetes pods restart?

我正在编写一个脚本,我想在其中使用按比例缩小的放大方法重新启动 kubernetes pod

kubectl scale --replicas=0 myPod -n myNamespace
kubectl scale --replicas=3 myPod -n myNamespace

我希望脚本等到豆荚正在Running - 所以我想像

while kubectl get pods --field-selector=status.phase=Running -n myNameSpace | grep -c myPod = 3;
    do
        sleep 1
        echo "."
    done

可以工作 - 但没有骰子。 = 3部分不起作用。 我不能只使用

while kubectl get pods --field-selector=status.phase!=Running -n myNameSpace | grep -c myPod > /dev/null

因为 Pod 是按顺序启动的,而我可能会在部署一个 Pod 时查询不走运,而其他 Pod 甚至都没有启动。

如何确保脚本仅在所有 3 个 pod 都在Running后继续?

将您的条件写在 [ ] 中并使用 ` 或 $ 获取命令的值。 例如在你的情况下:

while [ "$(kubectl get pods --field-selector=status.phase=Running -n myNameSpace | grep -c myPod)" != 3 ]

  do
    sleep 1
    echo "wait"
  done

echo "All three pods is running and continue your script"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM