首页 > 解决方案 > 用于检查 openshift/kubernetes pod 是否准备就绪的 Bash 脚本

问题描述

我正在尝试创建一个 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

即使 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

上面的脚本只是不断地打印等待 pod 准备好并且 pod 启动并运行。

任何帮助将不胜感激,我从 Bash 开始,不太确定该怎么做。

标签: bashkuberneteswhile-loopopenshiftuntil-loop

解决方案


我很惊讶到目前为止没有人提到实验性的,但官方的kubectl wait
$ kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available]


推荐阅读