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 campoimage
do JSON retornado.- Consulte a referência de jsonpath para obter mais informações sobre como usar o jsonpath.
- 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
- Use
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
- Guia de referência de Jsonpath
- Guia de referência de Go template