我正在使用 jq 获取所需格式的一些数据,此处粘贴了 pod 的完整 json 数据https://pastebin.com/UMJA7xd5。该数据是json格式的pod之一。我将在所有 Pod 上运行它,以便我可以列出如下信息:
podname,第一个容器名称,CPU 限制,内存限制,第二个容器名称,CPU 限制,内存限制--基于容器数量
基于 Pod 中的容器数量。 Pod 中的容器数量是随机的,有些 Pod 有 1 个,有些 Pod 最多有 5 个容器。
我能够创建到这里。
oc get po -o json | jq -j '.items[] | "\(.metadata.name), \(.spec.containers[] | .name +" , "+ .resources.limits.cpu +" , "+ .resources.limits.memory)\n" '
这给了我如下输出:-
kafka-0, kafka , 16 , 16Gi
kafka-0, filebeat , 2 , 256Mi
在上面的示例数据中,为单个 pod kafka-0 打印两个容器的数据。 kafka pod 有两个容器,因此产生两条线。
预期结果:
kafka-0, kafka , 16 , 16Gi, filebeat , 2 , 256Mi
我是 jq 的新手,尝试了很多选项,但未能成功,可能做错了什么。容器中的这个值各不相同,因此无法加入这些行。
答案1
$ cat test.jq
# Iterate over "items"
.items[] |
# Place each extracted element into an array
[
# Select elements
.metadata.name,
# Use parentheses to group
( .spec.containers[] | .name, .resources.limits["cpu","memory"] )
]
# Join the array together
| join(", ")
$ <input jq -r -f test.jq
kafka-0, kafka, 16, 16Gi, filebeat, 2, 256Mi