Eu tentei este script para ver o uso de volumes do Kubernetes
k get pods -n elk | jq -s '[flatten | .[].pods[].volume[]? | select(has("pvcRef"))
''{name: .pvcRef.name, capacityBytes, usedBytes, availableBytes, ''percentageUsed: (.usedBytes / .capacityBytes * 100)}]'
entendi isso
{name: .pvcRef.name, capacityBytes, usedBytes, availableBytes, percentageUsed: (.usedBytes / .capacityBytes * 100)}]
jq: 1 compile error
Minhas cápsulas
k get pods -n elk
k pegue vagens -n alce
NAME READY STATUS RESTARTS AGE
elasticsearch-master-0 1/1 Running 0 24d
elasticsearch-master-1 1/1 Running 0 24d
filebeat-filebeat-8jdqn 1/1 Running 0 24d
filebeat-filebeat-vl9js 1/1 Running 0 24d
filebeat-filebeat-xx2fm 1/1 Running 0 24d
filebeat-filebeat-zdj5k 1/1 Running 0 22d
kibana-kibana-9f5c6f974-kzzpr 0/1 Running 0 24d
logstash-logstash-0 1/1 Running 26 (19h ago) 24d
then
k describe kibana
dá
Volumes:
kube-api-access-2pizdku:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
E volume
k get pv -n elk
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM
STORAGECLASS REASON AGE
pvc-0462020 30Gi RWO Delete Bound elk/elasticsearch-master-elasticsearch-master-1 default
Por que?
Sua
jq
expressão, com espaço em branco extra inserido para facilitar a leitura:O que está faltando é um símbolo de pipe após o
select()
estágio do filtro. Inseri-lo o torna sintaticamente correto:Não se sabe se a expressão está correta em todos os outros sentidos, pois não sei como a entrada deve se parecer. O texto citado na pergunta não é JSON, então
jq
não seria possível aplicar a expressão diretamente a ele.