Kubectl Essencial: Domine a Linha de Comando do Kubernetes

Kubectl Essencial: Domine a Linha de Comando do Kubernetes

Kubectl Essencial: Domine a Linha de Comando do Kubernetes

O kubectl é a ferramenta oficial de linha de comando para interagir com clusters Kubernetes. Ele permite gerenciar recursos, depurar aplicações, automatizar tarefas e muito mais. Conhecer bem seus comandos e opções é fundamental para quem trabalha com Kubernetes.

Comandos básicos para listar e entender recursos

1. kubectl get

Lista recursos do cluster – pods, serviços, deployments etc.

# Todos os pods no namespace padrão
kubectl get pods

# Pods em todos os namespaces
kubectl get pods --all-namespaces

# Deployments com informações extras
kubectl get deployments -o wide

# Serviços no namespace "dev"
kubectl get svc -n dev

2. kubectl describe

Exibe detalhes completos de um recurso, incluindo eventos recentes, condições e status.

kubectl describe pod nginx-pod

Use describe para investigar falhas; a saída é textual e não indicada para consumo automático.

3. kubectl logs

Mostra os logs dos contêineres dentro de um pod.

# Logs do pod (especifique o container se houver mais de um)
kubectl logs my-pod
kubectl logs my-pod -c my-container

# Seguir logs em tempo real
kubectl logs -f my-pod

4. kubectl explain

Fornece documentação rápida sobre recursos e campos da API Kubernetes.

kubectl explain pods
kubectl explain deployment.spec.template.spec.containers

Criar, aplicar, comparar e deletar recursos

kubectl delete remove recursos.

kubectl delete pod nome-do-pod
kubectl delete -f deployment.yaml
# Forçar exclusão de um pod travado
kubectl delete pod nome-do-pod --grace-period=0 --force

Atenção: Use --force com cautela, pois pode causar perda de dados se utilizado indevidamente.

kubectl diff mostra a diferença entre o estado atual do cluster e um arquivo local.

kubectl diff -f deployment.yaml

Utilize para revisar mudanças antes de aplicar alterações, evitando surpresas.

kubectl apply cria ou atualiza recursos declarativamente, mantendo o estado desejado alinhado ao YAML.

kubectl apply -f deployment.yaml

Recomendado para fluxos de trabalho iterativos onde você quer manter o estado sincronizado com os arquivos de configuração.

kubectl create cria recursos a partir do zero. Se o recurso já existir, o comando falha.

kubectl create -f deployment.yaml

Use este comando quando quiser garantir que está criando um recurso novo sem sobrescrever estado existente.

Formatos de saída, filtragem e namespaces

-o wide – exibe colunas extras (IP, node, restart count, etc.).

kubectl get pods -o wide

Namespaces – por padrão, os comandos operam no namespace default.

kubectl get pods -n meu-namespace
# Definir namespace padrão para o contexto atual
kubectl config set-context --current --namespace=meu-namespace

Labels e selectors – filtram recursos por metadados.

# Pods com label app=frontend
kubectl get pods -l app=frontend

# Pods que NÃO têm a label env=prod
kubectl get pods -l 'env!=prod'

# Seletores combinados
kubectl get pods -l 'app=frontend,env=dev'

Saída estruturada (YAML ou JSON):

kubectl get pods -o yaml   # YAML
kubectl get pods -o json   # JSON

Debug rápido com exec e port-forward

kubectl port-forward encaminha uma porta local para um pod ou serviço, permitindo acesso a aplicações internas sem expô-las externamente.

# Encaminhar porta 8080 local para a porta 80 do serviço nginx
kubectl port-forward svc/nginx 8080:80

# Ou para um pod específico
kubectl port-forward pod/nome-do-pod 9090:80

kubectl exec executa comandos dentro de um pod.

# Abrir um shell bash
kubectl exec -it nome-do-pod -- /bin/bash

# Executar um comando simples
kubectl exec nome-do-pod -- ls /var/log

Resumo dos comandos e opções essenciais

Comando / OpçãoO que fazExemplo
kubectl getLista recursos; aceita labels, namespace e formatoskubectl get pods -n dev -l app=api -o wide
kubectl describeDetalha recurso e eventos recenteskubectl describe svc minha-api
kubectl logsExibe logs dos containerskubectl logs -f nome-do-pod
kubectl explainDocumentação da API e camposkubectl explain deployment.spec
kubectl createCria recursos (erro se já existirem)kubectl create -f app.yaml
kubectl applyCria ou atualiza recursos declarativamentekubectl apply -f app.yaml
kubectl diffMostra diferenças entre YAML local e estado atualkubectl diff -f app.yaml
kubectl deleteRemove recursoskubectl delete pod nome
-o yaml/jsonDefine formato de saída estruturadokubectl get svc -o yaml
-l, --selectorFiltra por labelskubectl get pods -l tier=backend
--namespaceDefine o namespace alvokubectl get pods --namespace=prod
-o wideExibe colunas adicionais na listagemkubectl get pods -o wide
kubectl execExecuta comando ou shell dentro do podkubectl exec -it pod -- /bin/bash
kubectl port-forwardEncaminha portas locais para pods ou serviçoskubectl port-forward svc/minha-api 8080:80

Considerações finais

Dominar o kubectl é indispensável para administrar e depurar clusters Kubernetes. A linha de comando expõe o modelo declarativo, permitindo inspeção e modificação rápida do ambiente.

  • Prefira apply para gerenciar recursos; ele mantém o estado desejado sincronizado.
  • Use labels e namespaces para organizar e filtrar recursos.
  • Recorra a describe e logs para entender o estado e eventos de um recurso.
  • Aproveite exec e port-forward para debugging direto, sem precisar expor serviços externamente.

Com essa base, você está pronto para explorar comandos avançados, automatizar rotinas e integrar Kubernetes ao seu fluxo de trabalho profissional.