如何使用 jsonpath 从 kubectl 中提取多个值

How do I extract multiple values from kubectl with jsonpath

我找到了用于测试多个值但不提取多个值的 jsonpath 示例。

我想从 kubectl get pods 得到 imagename

这让我感动 name kubectl get pods -o=jsonpath='{.items[*].spec.containers[*].name}' | xargs -n 1

这让我感动 image kubectl get pods -o=jsonpath='{.items[*].spec.containers[*].image}' | xargs -n 1

但是 kubectl get pods -o=jsonpath='{.items[*].spec.containers[*].[name,image}' | xargs -n 2

抱怨 invalid array index image - 是否有获取节点相邻值列表的语法?

使用以下命令获取名称和图像:

kubectl get pods -Ao jsonpath='{range .items[*]}{@.metadata.name}{" "}{@.spec.template.spec.containers[].image}{"\n"}{end}'

它将给出如下输出:

name image

有用的命令,我必须稍微修改一下才能使其工作(失败 -a 标志)。另外,我在 app label 中添加了一个过滤器,并添加了一个字段来获取:namespace、pod name、image

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{@.metadata.namespace}{"\t"}{@.metadata.name}{"\t"}{@.spec.containers[*].image}{"\n"}{end}' -l app=nginx