
我正在使用 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