是否可以不做任何工作就检索所有吊舱?
kubectl get pods
pod1 1/1 Running 1 28d
pod2 1/1 Running 1 28d
pods3 0/1 Completed 0 30m
pod4 0/1 Completed 0 30m
我不想看到工作,而只希望看到另一个窗格。
我不想基于“运行状态”来获取它们,因为我想验证我尝试安装的所有部署是否都“已部署”。
基于此,我想使用以下命令,但它也正在获取我尝试排除的作业:
kubectl wait --for=condition=Ready pods --all --timeout=600s
答案 0 :(得分:1)
在作业窗格中添加特殊标签(例如kind=pod
)。然后使用kubectl get pods -l kind!=pod
。
答案 1 :(得分:0)
如果可以使用少量脚本,则此行将返回所有名称空间中所有“非作业”窗格的名称:
for p in `kubectl get pods --all-namespaces -o=jsonpath="{range .items[*]}{.metadata.name}{';'}{.metadata.ownerReferences[?(@.kind != 'Job')].name}{'\n'}{end}"`; do v_owner_name=$(echo $p | cut -d';' -f2); if [ ! -z "$v_owner_name" ]; then v_pod_name=$(echo $p | cut -d';' -f1); echo $v_pod_name; fi; done
以上述内容为基础,以下目的是使所有处于“ Ready
”状态的“非工作”广告连播返回:
for p in `kubectl get pods --all-namespaces -o=jsonpath="{range .items[*]}{.metadata.name}{';'}{'Ready='}{.status.conditions[?(@.type == 'Ready')].status}{';'}{.metadata.ownerReferences[?(@.kind != 'Job')].name}{'\n'}{end}"`; do v_owner_name=$(echo $p | cut -d';' -f3); if [ ! -z "$v_owner_name" ]; then v_pod_name=$(echo $p | cut -d';' -f1,2); echo $v_pod_name; fi; done
This doc在某种程度上解释了kubectl
中JSONPath的支持。
答案 2 :(得分:0)
如果您的问题是-
我想验证我尝试安装的所有部署是否都是 “已部署”
然后这不是检查Kubernetes中Pod状态的正确方法。请检查副本和 readyReplicas 以进行部署。
kubectl get deployment <deployment-Name> -ojson | jq -r '.status | { desired: .replicas, ready: .readyReplicas }'
输出:-
{
"desired": 1,
"ready": 1
}
我在这里使用jq(非常方便)实用程序来解析内容