如何让 bash 脚本等到 kubernetes pod 重新启动?
Posted
技术标签:
【中文标题】如何让 bash 脚本等到 kubernetes pod 重新启动?【英文标题】:How do I make bash script wait until kubernetes pods restart? 【发布时间】:2022-01-15 04:16:33 【问题描述】:我正在编写一个脚本,我想在其中使用 scale-down scale-up 方法重新启动 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
之后才能继续?
【问题讨论】:
@mdaniel 听起来不错,但我无法使用动态 pod 名称。我使用的 Pod 将根据构建版本命名为类似于myPod-83dc4a56f7-wrght
。有没有办法为每个myPod
运行命令,而不管具体名称如何?
【参考方案1】:
在 [ ] 中写入你的条件,并使用 ` 或 $ 获取命令的值。例如在你的情况下:
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"
【讨论】:
以上是关于如何让 bash 脚本等到 kubernetes pod 重新启动?的主要内容,如果未能解决你的问题,请参考以下文章