website/content/pt-br/docs/tasks/access-application-cluster/list-all-running-container-...

3.3 KiB

title content_type weight
Listar todas as imagens de contêiner em execução no cluster task 100

Esta página mostra como usar o kubectl para listar todas as imagens de contêineres dos Pods em execução no cluster.

{{% heading "prerequisites" %}}

{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}

Neste exercício, você usará o kubectl para buscar todos os Pods em execução no cluster e formatar a saída com uma lista dos contêineres por imagem.

Listar todas as imagens de contêiner de todos os namespaces

  • Busque todos os Pods em todos os namespaces usando kubectl get pods --all-namespaces
  • Formate a saída incluindo apenas a lista de nomes das imagens de contêiner usando -o jsonpath={.items[*].spec['initContainers', 'containers'][*].image}. Isso irá analisar recursivamente o campo image do JSON retornado.
  • Formate a saída usando as ferramentas: tr, sort, uniq
    • Use tr para substituir espaços por quebras de linha
    • Use sort para ordenar os resultados
    • Use uniq para agregar a contagem de imagens
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

O jsonpath é interpretado da seguinte forma:

  • .items[*]: para cada valor retornado
  • .spec: coleta a especificação do recurso informado
  • ['initContainers', 'containers'][*]: para cada contêiner
  • .image: coleta o nome da imagem

{{< note >}} Quando você busca um único Pod pelo nome, por exemplo kubectl get pod nginx, a parte .items[*] do caminho deve ser omitida porque um único Pod é retornado e não uma lista de itens. {{< /note >}}

Listar imagens de contêiner por Pod

O formato de saída pode ser controlado ainda mais usando a operação range para iterar sobre os elementos individualmente.

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\
sort

Listar imagens de contêiner filtrando pelo label do Pod

Para selecionar apenas os Pods que correspondem a um label específico, use a flag -l. O comando a seguir seleciona apenas os Pods com o label app=nginx.

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" -l app=nginx

Listar imagens de contêiner filtrando pelo namespace do Pod

Para selecionar apenas os Pods de um namespace específico, use a flag namespace. O comando a seguir seleciona apenas os Pods no namespace kube-system.

kubectl get pods --namespace kube-system -o jsonpath="{.items[*].spec.containers[*].image}"

Listar imagens de contêiner usando go-template ao invés de jsonpath

Como alternativa ao jsonpath, o kubectl suporta o uso de go-templates para formatar a saída:

kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"

{{% heading "whatsnext" %}}

Referência