Kubernetes使用jq提取Pod容器列表出现笛卡尔积问题求助
问题原因
你写的jq命令中两次单独展开了.spec.containers数组:.spec.containers[].name 和 .spec.containers[].image 是两次独立的数组展开操作,jq会默认将两次展开的所有取值做笛卡尔积组合,2个容器的场景下就会生成2*2=4组结果,也就是你看到的重复错误输出。
正确处理命令
jq '.items[] | { "name": .metadata.name, "containers": [.spec.containers[] | { "name": .name, "image": .image }]}'
命令逻辑说明
- 先通过
.spec.containers[]遍历容器数组的每个单独元素 - 对每个容器元素直接提取自身的
name和image字段构造对象 - 最后用
[]将所有构造好的容器对象包裹成数组,避免多次展开数组导致的笛卡尔积问题
执行后即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者Zegal
相关产品推荐
相关产品推荐

