Referência rápida

kubectl Cheatsheet

Comandos essenciais para o dia a dia como Platform Engineer.

// PODS & CONTAINERS
kubectl get pods -A -o wide
Todos pods de todos namespaces com IPs e nodes
kubectl describe pod <pod> -n <ns>
Detalhes completos + eventos do pod
kubectl logs <pod> --previous -f
Logs do container anterior (após crash)
kubectl exec -it <pod> -- sh
Shell interativo no container
kubectl delete pod <pod> --force --grace-period=0
Forçar deleção de pod stuck
kubectl top pods -A --sort-by=memory
Uso de memória por pod (requer metrics-server)
kubectl get pods -A | grep -v Running | grep -v Completed
Todos os pods com problema
// DEPLOYMENTS & ROLLOUTS
kubectl rollout status deploy/<name>
Acompanhar progresso do deploy
kubectl rollout history deploy/<name>
Histórico de revisões do deployment
kubectl rollout undo deploy/<name>
Rollback para versão anterior
kubectl rollout restart deploy/<name>
Reiniciar todos os pods do deployment
kubectl scale deploy <name> --replicas=0
Zerar réplicas (scale down)
kubectl set image deploy/<name> app=<image:tag>
Atualizar imagem de um container
kubectl diff -f manifest.yaml
Ver diff antes de aplicar mudança
// NODES & CLUSTER
kubectl get nodes -o wide
Nodes com IPs, OS e versão do kubelet
kubectl top nodes
Uso de CPU/Memória dos nodes
kubectl drain <node> --ignore-daemonsets --delete-emptydir-data
Esvaziar node para manutenção
kubectl cordon <node>
Impedir novos pods no node (sem remover existentes)
kubectl uncordon <node>
Reabilitar agendamento no node
kubectl taint node <node> key=value:NoSchedule
Adicionar taint ao node
kubectl get events -A --sort-by='.lastTimestamp' | tail -30
Eventos recentes do cluster
// NETWORKING & SERVICES
kubectl get svc,endpoints -n <ns>
Services e seus endpoints (IPs dos pods)
kubectl port-forward svc/<svc> 8080:80
Forward de porta local para service
kubectl describe ingress <name>
Detalhes do Ingress e regras de roteamento
kubectl get networkpolicies -A
Listar todas Network Policies
kubectl run debug --image=nicolaka/netshoot -it --rm --restart=Never -- bash
Pod efêmero com ferramentas de rede
kubectl run test --image=busybox -it --rm --restart=Never -- nslookup kubernetes.default
Testar DNS do cluster
// RBAC & SEGURANÇA
kubectl auth can-i get pods --as=system:serviceaccount:<ns>:<sa>
Testar permissões de um ServiceAccount
kubectl get rolebindings,clusterrolebindings -A -o wide
Listar todos os bindings de RBAC
kubectl describe configmap aws-auth -n kube-system
Ver mapeamento IAM → K8s no EKS
kubectl get secrets -n <ns>
Listar secrets do namespace
kubectl get serviceaccounts -n <ns>
Listar ServiceAccounts do namespace
// STORAGE
kubectl get pvc -A
Listar todos os PersistentVolumeClaims
kubectl describe pvc <name> -n <ns>
Detalhes do PVC (ver se está Bound ou Pending)
kubectl get pv
Listar PersistentVolumes (escopo de cluster)
kubectl get storageclass
Listar StorageClasses disponíveis
kubectl logs -n kube-system -l app=ebs-csi-controller -c csi-provisioner
Logs do EBS CSI Driver
// DEBUG & INVESTIGAÇÃO
kubectl get all -n <ns>
Todos os recursos de um namespace
kubectl describe pod <pod> | grep -A20 Events
Ver apenas eventos do pod
kubectl debug <pod> -it --image=busybox --share-processes --copy-to=debug-pod
Debug de pod sem modificar o original (k8s 1.23+)
kubectl get pods --field-selector=status.phase=Failed -A
Todos os pods com status Failed
kubectl describe node <node> | grep -A5 'Allocated resources'
Recursos alocados vs disponíveis no node
// AWS EKS ESPECÍFICO
aws eks update-kubeconfig --name <cluster> --region <region>
Configurar kubeconfig para o cluster EKS
aws eks list-addons --cluster-name <name>
Listar add-ons gerenciados do cluster
aws eks describe-addon --cluster-name <name> --addon-name vpc-cni
Status de um add-on gerenciado
aws eks list-nodegroups --cluster-name <name>
Listar node groups do cluster
kubectl get pods -n kube-system
Ver todos os componentes do sistema (CNI, CoreDNS, etc.)
aws ssm start-session --target <instance-id>
Acessar node EKS via SSM (sem SSH)
// FLAGS ÚTEIS GLOBAIS
-n <ns>namespace específico
-A / --all-namespacestodos os namespaces
-o widemais colunas
-o yamloutput completo em YAML
-o json | jqoutput JSON com filtro
--watch / -wacompanhar em tempo real
--dry-run=clientsimular sem aplicar
-l app=nginxfiltrar por label
--forceforçar operação
-v=6verbose para debug da API