我想知道kubernetes中是否有一个命令,如果命名空间中的所有资源都具有就绪状态,则返回true;否则返回false。
类似于此(虚拟)命令的内容:
kubectl get namespace <namespace-name> readiness
如果没有这样的命令,那么可以帮助我指导如何检索此信息(如果给定名称空间中的所有资源均已准备就绪)。
答案 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