Listar todas as imagens de contêiner em execução no cluster
Esta página mostra como usar o kubectl para listar todas as imagens de contêineres dos Pods em execução no cluster.
Antes de você começar
Você precisa ter um cluster do Kubernetes e a ferramenta de linha de comando kubectl deve estar configurada para se comunicar com seu cluster. É recomendado executar esse tutorial em um cluster com pelo menos dois nós que não estejam atuando como hosts de camada de gerenciamento. Se você ainda não possui um cluster, pode criar um usando o minikube ou pode usar um dos seguintes ambientes:
Para verificar a versão, digitekubectl version
.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
Nota:
Quando você busca um único Pod pelo nome, por exemplokubectl get pod nginx
,
a parte .items[*]
do caminho deve ser omitida porque um único Pod é retornado
e não uma lista de itens.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}}"
Próximos passos
Referência
- Guia de referência de Jsonpath
- Guia de referência de Go template