Table of Contents
GUIA DE REFERÊNCIA RÁPIDA KUBERNETES - COMANDOS ESSENCIAIS E OTIMIZAÇÃO
Este guia de referência rápida (Cheat Sheet) compila os comandos Kubernetes (kubectl) mais utilizados, organizados por funcionalidade, para otimizar a administração, limpeza e manutenção de clusters.
1. GERENCIAMENTO DE RECURSOS BÁSICOS
1.1. MONITORAMENTO E INFORMAÇÕES DO SISTEMA
# Verifica a versão do cliente e do servidor Kubernetes kubectl version --short # Exibe informações do cluster (Master e Serviços) kubectl cluster-info # Lista todos os nós do cluster e seu status kubectl get nodes # Exibe o uso de recursos (CPU/Memória) dos nós (requer Metrics Server) kubectl top nodes # Exibe o uso de recursos (CPU/Memória) dos pods kubectl top pods --all-namespaces # Descreve detalhes de um nó específico (capacidade, alocação, eventos) kubectl describe node <nome-do-no> # Lista eventos do cluster ordenados por tempo kubectl get events --sort-by='.lastTimestamp'
1.2. GERENCIAMENTO DE PODS E WORKLOADS
# Listagem de Pods kubectl get pods # Lista pods no namespace atual kubectl get pods -A # Lista pods em todos os namespaces kubectl get pods -o wide # Lista pods com IP e Nó onde estão rodando kubectl get pods --watch # Monitora mudanças nos pods em tempo real # Controle de Workloads kubectl rollout restart deployment <nome> # Reinicia todos os pods de um deployment kubectl scale deployment <nome> --replicas=3 # Altera o número de réplicas kubectl delete pod <nome> # Remove um pod específico (o ReplicaSet criará outro) # Execução e Debug kubectl exec -it <pod> -- bash # Abre um terminal interativo dentro do pod kubectl logs <pod> # Exibe os logs de um pod kubectl logs -f <pod> # Segue os logs em tempo real (tail -f) kubectl logs <pod> -c <container> # Logs de um container específico em um pod multi-container # Operações de Arquivos kubectl cp <local-path> <pod>:<path> # Copia arquivo do host para o pod kubectl cp <pod>:<path> <local-path> # Copia arquivo do pod para o host
1.3. GERENCIAMENTO DE CONFIGURAÇÕES E STORAGE
# ConfigMaps e Secrets kubectl get configmaps kubectl get secrets kubectl describe secret <nome> # Mostra metadados (não o valor decodificado) kubectl get secret <nome> -o jsonpath='{.data}' # Obtém valores codificados em base64 # Volumes e Storage kubectl get pv # Lista Persistent Volumes (Cluster-wide) kubectl get pvc # Lista Persistent Volume Claims (Namespace) kubectl describe pvc <nome> # Verifica status da montagem e erros de bind
2. LIMPEZA E REMOÇÃO EM LOTE (OTIMIZAÇÃO DE ESPAÇO)
2.1. LIMPEZA DE RECURSOS TERMINADOS E ÓRFÃOS
# Remove Pods que falharam ou completaram com sucesso kubectl delete pods --field-selector status.phase!=Running # Remove Pods em estado 'Evicted' (comum em falta de recursos no nó) kubectl get pods -A | grep Evicted | awk '{print $2 " --namespace=" $1}' | xargs kubectl delete pod # Remove ReplicaSets antigos (que não possuem réplicas ativas) kubectl delete rs $(kubectl get rs -o jsonpath='{.items[?(@.spec.replicas==0)].metadata.name}') # Limpeza de Jobs concluídos kubectl delete jobs --field-selector status.successful=1
2.2. REMOÇÃO EM MASSA (USANDO FILTROS)
# Remove todos os recursos de um namespace específico kubectl delete all --all -n <namespace> # Remove recursos por labels (etiquetas) kubectl delete pods -l app=nginx kubectl delete all -l environment=dev # Remove PVCs que não estão sendo utilizados (Cuidado: apaga dados!) kubectl get pvc | grep -v Bound | awk '{print $1}' | xargs kubectl delete pvc
2.3. LIMPEZA DE IMAGENS NOS NÓS (DENTRO DO NÓ)
O Kubernetes não limpa imagens diretamente via `kubectl`. Isso deve ser feito no runtime do nó (Docker ou Containerd).
# Se o nó usa Containerd (comum em clusters modernos) crictl rmi --prune # Se o nó usa Docker docker image prune -a
3. DICAS AVANÇADAS E ALIASES
3.1. DEBUG AVANÇADO
# Cria um pod temporário para testes de rede kubectl run busybox --image=busybox -it --rm -- restart=Never -- sh # Port-Forward: Acessa um serviço localmente sem expor via LoadBalancer kubectl port-forward svc/<nome-servico> 8080:80 # Visualiza o YAML de um recurso existente (útil para backup/clonagem) kubectl get deployment <nome> -o yaml > backup.yaml
3.2. ALIASES RECOMENDADOS (ADICIONAR AO ~/.bashrc)
# Atalho principal alias k='kubectl' # Atalhos de navegação e visualização alias kgp='kubectl get pods' alias kgs='kubectl get svc' alias kgd='kubectl get deployments' alias kns='kubectl config set-context --current --namespace' # Muda namespace padrão # Atalhos de limpeza alias kclean-evicted="kubectl get pods -A | grep Evicted | awk '{print \$2 \" --namespace=\" \$1}' | xargs kubectl delete pod" alias kclean-failed="kubectl delete pods --field-selector status.phase=Failed -A" # Atalhos de monitoramento alias ktop='kubectl top nodes' alias ktop-pods='kubectl top pods'
3.3. OTIMIZAÇÃO DE RECURSOS (BEST PRACTICES)
1. Defina Limits e Requests: Sempre configure `resources.requests` e `resources.limits` para evitar que um pod consuma todos os recursos do nó. 2. Use Horizontal Pod Autoscaler (HPA): Automatize o escalonamento baseado no uso de CPU/Memória. 3. PDB (Pod Disruption Budgets): Garanta a disponibilidade mínima durante manutenções nos nós. 4. Node Affinity/Taints: Controle onde seus pods devem ou não rodar para otimizar a distribuição de carga.
4. SCRIPTS DE MANUTENÇÃO
Script: check_cluster_health.sh
- check_health.sh
#!/bin/bash echo "=== STATUS DOS NÓS ===" kubectl get nodes echo -e "\n=== PODS NÃO SAUDÁVEIS ===" kubectl get pods -A | grep -vE 'Running|Completed' echo -e "\n=== EVENTOS RECENTES DE ERRO ===" kubectl get events -A --field-selector type=Warning
Script: nuke_namespace.sh
- nuke_ns.sh
#!/bin/bash # Remove um namespace e força a limpeza se ficar travado em 'Terminating' NS=$1 kubectl delete ns $NS --timeout=30s # Se ainda existir, remove os finalizers (uso avançado) kubectl get namespace $NS -o json | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$NS/finalize" -f -
