我想从 kubernetes 命名空间检查未运行/完成的 pod 的状态 900 秒,如果这些 pod 仍未运行/完成,则在 900 秒后退出脚本
这是我的脚本,除了脚本本身的退出外,它都有效:
STARTTIME=$(date +%s)
my_namespace=dummy
status="false"
for ((i = 0 ; i <= 60 ; i++)); do
result_getpods="$(kubectl get po -n "$my_namespace" | grep -v -E
'Completed|Running' | { grep -v -E 'RESTARTS' || true; })"
if [[ "$result_getpods" != "" ]]; then
echo "Pods status for $my_namespace"
kubectl get po -n "$my_namespace" | grep -v -E
'Completed|Running|Evicted' | grep -v -E 'RESTARTS'
echo "$(date +%Y_%m_%d-%H:%M:%S). Some pods are still not
running."
echo "Checked $i times."
sleep 15s
status="false"
if [[ "$(($(date +%s) - ${STARTTIME}))" -eq 900 ]]; then
badstatus="$(kubectl get po -n "$my_namespace" | grep -v -E
'Completed|Running|Evicted' | grep -v -E 'RESTARTS' | wc -l)"
echo "$(date +%Y_%m_%d-%H:%M:%S). $badstatus pods are still
not running."
echo "Checked $i times."
exit -1
fi
else
echo "Pods status for $my_namespace."
kubectl get po -n "$my_namespace"
echo "It takes $(($(date +%s) - ${STARTTIME})) seconds to
complete this task."
echo "Deployment success."
echo "Checked $i times."
status="true"
break
fi
done
if [[ "$status" == "false" ]]; then
echo "$(date +%Y_%m_%d-%H:%M:%S). Some pods are still not running"
exit -1
fi