Kubectl命令检查名称空间是否准备就绪

时间:2019-02-18 10:30:08

标签: kubernetes

我想知道kubernetes中是否有一个命令,如果命名空间中的所有资源都具有就绪状态,则返回true;否则返回false。

类似于此(虚拟)命令的内容:

kubectl get namespace <namespace-name> readiness

如果没有这样的命令,那么可以帮助我指导如何检索此信息(如果给定名称空间中的所有资源均已准备就绪)。

3 个答案:

答案 0 :(得分:4)

没有这样的命令。尝试使用以下命令检查所有正在运行的Pod

kubectl get po -n <namespace> | grep 'Running\|Completed'

以下命令可检查失败,终止,错误等的Pod。

kubectl get po -n <namespace> | grep -v Running |grep -v Completed

答案 1 :(得分:0)

通过以下sh脚本,可以检查给定名称空间中的所有pod是否正在运行:

allRunning() {
    podStatus=$(kubectl get pods -n <namespace> -o=jsonpath='{range .items[*]}{.status.conditions[?(@.type=="ContainersReady")].status}{"\n"}{end}')
    for elem in $podStatus
    do
        echo $elem
        if [ $elem != "Running" ]
        then
            return 0
        fi
    done
    return 1
}
allRunning
allAreRunning=$

if [ $allAreRunning == 1 ] 
then
    echo "all are running"
else
    echo "not ready"
fi

编辑1: 正如评论中所建议的那样,pod似乎不是检查准备情况的正确资源类型。因此,我建议根据部署可用性使用以下命令查询准备情况:

kubectl get deployments -o=jsonpath='{range .items[*]}{.status.conditions[?(@.type=="Available")].status}{"\n"}{end}'

答案 2 :(得分:0)

kubectl get ns ${namespace} -o json | jq .status.phase -r 并且如果它准备好了,它将返回状态 Active