Kubernetes 使用kubectl-o=jsonpath获得就绪状态
我试图通过使用-o=jsonpath获得pod的就绪状态。 为了更清楚地了解我想要什么,我想使用-o=jsonpath获得下面示例的值1/1Kubernetes 使用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
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}'