
Estoy usando jq para obtener algunos datos en el formato deseado, los datos json completos de un pod se pegan aquíhttps://pastebin.com/UMJA7xd5. Estos datos son uno de los pods en formato json. Voy a ejecutarlo en todos los pods para poder enumerar información como,
nombre-pod, nombre-del-primer-contenedor, límite-de-cpu, límite-de-memoria, nombre-del-segundo-contenedor, límite-de-cpu, límite-de-memoria, etc., según el número de contenedor
Basado en la cantidad de contenedores en un pod. La cantidad de contenedores en las cápsulas es aleatoria, algunas cápsulas tienen 1 o otras tienen hasta 5 contenedores.
Puedo crear hasta aquí.
oc get po -o json | jq -j '.items[] | "\(.metadata.name), \(.spec.containers[] | .name +" , "+ .resources.limits.cpu +" , "+ .resources.limits.memory)\n" '
que me dan un resultado como el siguiente: -
kafka-0, kafka , 16 , 16Gi
kafka-0, filebeat , 2 , 256Mi
En los datos del ejemplo anterior, se imprimen datos de dos contenedores para un solo pod kafka-0. Kafka pod tiene dos contenedores, por lo que produce dos líneas.
Resultado Esperado:
kafka-0, kafka , 16 , 16Gi, filebeat , 2 , 256Mi
Soy nuevo en jq y probé muchas opciones, pero no pude hacerlo, es posible que esté haciendo algo mal. En este valor de contenedor son variables, por lo que no se pudieron unir estas líneas.
Respuesta1
$ 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