Pular para o conteúdo

kubectl

kubernetes

Substitua <ns> pelo namespace e <pod> pelo nome do recurso. Comandos destrutivos estão marcados.

Comando O que faz
kubectl config get-contexts Lista contextos disponíveis
kubectl config current-context Mostra o cluster atual
kubectl config use-context <ctx> Troca de cluster
kubectl config set-context --current --namespace=<ns> Fixa o namespace padrão
kubectl cluster-info Endereços do control plane
kubectl version --short Versão do cliente e do servidor

Confirme o contexto antes de qualquer comando destrutivo. kubectx e kubens facilitam.

Comando O que faz
kubectl get pods -n <ns> Lista Pods
kubectl get pods -A Todos os namespaces
kubectl get pods -o wide Acrescenta nó e IP
kubectl get pod <pod> -n <ns> -o yaml Estado real completo
kubectl get all -n <ns> Recursos comuns (não é literalmente tudo)
kubectl describe pod <pod> -n <ns> Detalhes e eventos
kubectl get events -n <ns> --sort-by=.lastTimestamp Eventos em ordem
kubectl api-resources Todos os tipos disponíveis no cluster
kubectl explain deployment.spec.template Documentação do campo
Comando O que faz
kubectl get pods -l app=loja Por label
kubectl get pods -l 'env in (prod,hom)' Label com conjunto
kubectl get pods --field-selector=status.phase=Pending Por campo
kubectl get pods --sort-by=.status.startTime Ordena
kubectl get pods --show-labels Mostra todas as labels
kubectl get pods -w Acompanha mudanças
Comando O que faz
kubectl logs <pod> -n <ns> Log do container atual
kubectl logs <pod> -n <ns> --previous Log da execução anterior (crash)
kubectl logs <pod> -c <container> -n <ns> Container específico
kubectl logs -l app=loja -n <ns> --tail=50 --prefix Todos os Pods do label
kubectl logs <pod> -f --since=10m Segue, últimos 10 minutos
kubectl exec -it <pod> -n <ns> -- sh Shell no container
kubectl debug -it <pod> -n <ns> --image=busybox --target=<container> Container efêmero (imagem sem shell)
kubectl cp <ns>/<pod>:/caminho ./local Copia arquivo
Comando O que faz
kubectl top pods -n <ns> Uso de CPU e memória (exige metrics-server)
kubectl top nodes Uso por nó
kubectl get endpointslice -n <ns> Endpoints por Service
kubectl describe node <no> Capacidade, alocado, condições
kubectl get pods -A --field-selector=status.phase!=Running O que não está rodando
kubectl get --raw='/readyz?verbose' Saúde do API server
kubectl auth can-i --list -n <ns> O que você pode fazer
kubectl auth whoami Identidade e grupos do token
Comando O que faz
kubectl apply -f arquivo.yaml Aplica
kubectl apply -k overlays/prod Aplica com Kustomize
kubectl diff -f arquivo.yaml O que mudaria — rode antes do apply
kubectl apply --dry-run=server -f arquivo.yaml Valida contra o servidor e as políticas
kubectl edit deployment <nome> -n <ns> Edita no editor (evite em produção)
kubectl patch deployment <nome> -n <ns> -p '{"spec":{"replicas":3}}' Altera campo
kubectl delete -f arquivo.yaml Destrutivo
kubectl label pod <pod> ambiente=teste --overwrite Altera label
Comando O que faz
kubectl scale deployment <nome> -n <ns> --replicas=5 Escala
kubectl rollout status deployment/<nome> -n <ns> Acompanha o rollout
kubectl rollout history deployment/<nome> -n <ns> Revisões
kubectl rollout undo deployment/<nome> -n <ns> Reverte uma revisão
kubectl rollout undo deployment/<nome> --to-revision=3 Revisão específica
kubectl rollout restart deployment/<nome> -n <ns> Recria os Pods
kubectl rollout pause/resume deployment/<nome> Pausa e retoma
Comando O que faz
kubectl port-forward pod/<pod> 8080:80 -n <ns> Túnel para o Pod
kubectl port-forward svc/<svc> 8080:80 -n <ns> Túnel para o Service
kubectl run diag --rm -it --image=nicolaka/netshoot -n <ns> -- bash Pod temporário de rede
kubectl proxy Proxy local para a API
Comando O que faz
kubectl cordon <no> Impede novos Pods
kubectl drain <no> --ignore-daemonsets --delete-emptydir-data Esvazia o nó
kubectl uncordon <no> Volta a aceitar Pods
kubectl taint nodes <no> chave=valor:NoSchedule Aplica taint
Janela do terminal
# imagem em execução
kubectl get deploy <nome> -n <ns> -o jsonpath='{.spec.template.spec.containers[0].image}{"\n"}'
# nome e nó de cada Pod
kubectl get pods -n <ns> -o custom-columns='NOME:.metadata.name,NO:.spec.nodeName'
# Pods reiniciando
kubectl get pods -A -o json | jq -r '.items[]
| select(.status.containerStatuses[]?.restartCount > 5)
| "\(.metadata.namespace)/\(.metadata.name)"'
# requests declarados por container
kubectl get pods -n <ns> -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].resources.requests}{"\n"}{end}'
  • kubectl get all não traz tudo: faltam Ingress, Secret, ConfigMap, PVC, CRDs.
  • --previous só existe se o container já reiniciou.
  • Eventos expiram (padrão de uma hora); problema antigo pode não ter evento.
  • delete pod de um Deployment recria o Pod: é o jeito de “reiniciar” um.
  • edit em produção cria drift em relação ao Git; prefira mudar o manifest.
  • apply sobre recurso criado com create pode gerar conflito de campos gerenciados.