JSONPath输出支持回溯遍历吗?附Kubernetes命令示例
JSONPath输出中如何实现回溯遍历?
你的问题核心是在嵌套遍历JSONPath时,需要回溯到外层迭代的对象(此处为Pod),获取其关联字段并和内层对象(容器)的字段一起输出。
问题分析
你当前使用的命令:
kgp -o jsonpath='{range .items[]}{range @.spec.containers[*]}{@.name}{"\t"}{.items[*].metadata.name}{"\n"}{end}{"\n"}{end}'
其中.items[*].metadata.name会全局遍历所有Pod的名称,而非当前容器所属的Pod,导致输出只显示容器名,无法关联对应的Pod字段。
解决方法
在外层遍历Pod的range中,将当前Pod的目标字段(如metadata.name)赋值给变量,内层遍历容器时直接引用该变量即可实现回溯关联:
kgp -o jsonpath='{range .items[]}{$podName := .metadata.name}{range @.spec.containers[*]}{@.name}{"\t"}{$podName}{"\n"}{end}{end}'
输出结果
执行上述命令后,会得到符合预期的输出:
- nginx default
- istio-proxy default
- sidecar-1 default
内容的提问来源于stack exchange,提问作者kabilan
相关产品推荐
相关产品推荐

