
Estou usando jq para obter alguns dados no formato desejado, os dados json completos de um pod são colados aquihttps://pastebin.com/UMJA7xd5. Esses dados são um do pod no formato json. Vou executá-lo em todos os pods, para poder listar informações como,
nome do pod, nome do primeiro contêiner, limite de CPU, limite de memória, nome do segundo contêiner, limite de CPU, limite de memória - assim por diante baseado no número do contêiner
Com base no número de contêineres em um pod. O número de contêineres nos pods é aleatório, alguns pods têm 1 ou outros têm até 5 contêineres.
Eu sou capaz de criar até aqui.
oc get po -o json | jq -j '.items[] | "\(.metadata.name), \(.spec.containers[] | .name +" , "+ .resources.limits.cpu +" , "+ .resources.limits.memory)\n" '
que me dá uma saída como abaixo: -
kafka-0, kafka , 16 , 16Gi
kafka-0, filebeat , 2 , 256Mi
Nos dados do exemplo acima, imprimindo dados de dois contêineres para um único pod kafka-0. O pod kafka tem dois contêineres, produzindo duas linhas.
Resultado esperado:
kafka-0, kafka , 16 , 16Gi, filebeat , 2 , 256Mi
Sou novo no jq e tentei várias opções, mas não consegui, posso estar fazendo algo errado. Neste valor do container estão variando, portanto não foi possível unir essas linhas.
Responder1
$ 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