Bash script to check if openshift/kubernetes pods are ready

5/20/2020

I am trying to create a shell script that will validate that certain pods are ready by checking the READY heading showing 1/1. I have tried two ways.

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

Above script just keeps saying "Waiting for pods to be ready" even when the pods are ready and displaying 1/1 in the READY column.

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

Above script just continually prints waiting for pods to be ready and pods are up and running.

Any help would be appreciated, I am starting with Bash and not quite sure what to do.

-- Ren
bash
kubernetes
openshift
until-loop
while-loop

0 Answers