Esta página mostra como usar o kubectl para listar todas as imagens de contêineres dos Pods em execução no cluster.
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, digite kubectl 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.
kubectl get pods --all-namespaces-o jsonpath={.items[*].spec['initContainers', 'containers'][*].image}.
Isso irá analisar recursivamente o campo image do JSON retornado.tr, sort, uniqtr para substituir espaços por quebras de linhasort para ordenar os resultadosuniq para agregar a contagem de imagenskubectl 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 imagemkubectl get pod nginx,
a parte .items[*] do caminho deve ser omitida porque um único Pod é retornado
e não uma lista de itens.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
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
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}"
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}}"