Kubernetes 使用kubectl-o=jsonpath获得就绪状态

Kubernetes 使用kubectl-o=jsonpath获得就绪状态,kubernetes,Kubernetes,我试图通过使用-o=jsonpath获得pod的就绪状态。 为了更清楚地了解我想要什么,我想使用-o=jsonpath获得下面示例的值1/1 NAME READY STATUS RESTARTS AGE some_pod 1/1 Running 1 34d 我已经设法获得了一些信息,比如pod名称或名称空间 kubectl get pods --all-namespaces -o=jsonpath='{range .items

我试图通过使用-o=jsonpath获得pod的就绪状态。 为了更清楚地了解我想要什么,我想使用-o=jsonpath获得下面示例的值1/1

NAME       READY     STATUS    RESTARTS   AGE
some_pod   1/1       Running   1          34d
我已经设法获得了一些信息,比如pod名称或名称空间

kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{end}'
我会有这样的感觉:

一些\u名称空间1 pod\u名称1

但是,我不知道如何获得就绪状态。我想要的是类似于以下内容的输出:

一些名称空间1 pod名称1 1/1

我知道我可以使用bash命令,如cut:

kubectl get pods --all-namespaces| tail -1 | cut -d' ' -f8

但是,我想通过使用kubectl获得它,您可以使用以下命令获得所有pods状态:

kubectl get pods -o jsonpath={.items[*].status.phase}
可用于名称的类似命令

kubectl get pods -o jsonpath={.items[*].metadata.name}
编辑:


您需要比较
.status.replicas
.status.readyReplicas
以获得有多少个就绪副本

我认为Kubernetes API中没有直接报告这一点

如果你
kubectl得到pod-o yaml
(或
-o json
)您将返回一个与
列表
(未包含在API文档中)匹配的对象,其中每个项目都是Kubernetes API中的一个,并且
-o jsonpath
值遵循该对象结构。特别是,a有一个列表,每个列表可能是或可能不是
就绪的
,但API本身不会将计数作为一级字段返回

有两种不同的JSONPath实现。我认为Kubernetes只支持,它不包括任何类型的“长度”函数。(和ready Googlable似乎都是,语法略有不同。)

我能想到的最好办法就是报告所有单个容器的“就绪”状态


$“…”
是bash/zsh语法),但这仍然需要一些后处理来恢复原始计数。

是的,我知道,正如我在问题中添加的那样,我可以通过使用jsonpath获得很多东西。但是,我想明确地获得就绪状态。如果我使用:
kubectl get pod-o json
检查所有json,我看不到任何1/1字符串。在这种情况下,您需要比较
.status.replicas
.status.readyReplicas
来获得它,您可能需要在jsonpath周围添加引号:
kubectl get pods-所有名称空间-o jsonpath=“{.items[*].status.phase}”
kubectl get pods \
  -o $'jsonpath={range .items[*]}{.metadata.name}\t{.status.containerStatuses[*].ready}\n{end}'