如何使用 bash 在给定时间内从 kubernetes 命名空间检查处于未运行/已完成状态的 pod

问题描述 投票:0回答:0

我想从 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
bash kubernetes
© www.soinside.com 2019 - 2024. All rights reserved.