Ren*_*Ren 4 bash while-loop openshift kubernetes until-loop
我正在尝试创建一个 shell 脚本,通过检查显示 1/1 的 READY 标题来验证某些 Pod 是否已准备就绪。我尝试过两种方法。
1.
ready=$(oc get pods | awk '{print $2}' | tail -n +2) # prints 1/1 or 0/1 for each pod
until [[ ${ready} == "1/1" ]]
do
echo "Waiting for pods to be ready."
sleep 3
done
Run Code Online (Sandbox Code Playgroud)
即使 Pod 已准备好并在 READY 列中显示 1/1,上面的脚本仍会一直显示“等待 Pod 准备好”。
2.
while true ; do
for i in 1 2 3; do
ready=`oc get pods | awk '{print $2}' | tail -n +2 | head -n $i`
if [[ "${ready}" == "1/1" ]]; then
echo "pods are up and running"
else
echo "waiting for pods to be ready"
sleep 10
break
fi
done
done
Run Code Online (Sandbox Code Playgroud)
上面的脚本只是不断地打印等待 pod 准备好并且 pod 启动并运行。
任何帮助将不胜感激,我从 Bash 开始,不太确定该怎么做。
rin*_*ahn 11
我很惊讶到目前为止没有人提到实验性的、官方的kubectl wait:
$ kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available]
以下解决方案对我有用
while [ "$(kubectl get pods -l=app='activemq' -o jsonpath='{.items[*].status.containerStatuses[0].ready}')" != "true" ]; do
sleep 5
echo "Waiting for Broker to be ready."
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19015 次 |
| 最近记录: |