# Kubernetes Troubleshooting Guide

## CrashLoopBackOff
O Pod reinicia repetidamente. Diagnóstico:
```bash
# Ver logs do pod (tentativa atual)
kubectl logs <pod-name> -n <namespace>
# Ver logs da tentativa anterior
kubectl logs <pod-name> -n <namespace> --previous
# Ver eventos e detalhes do pod
kubectl describe pod <pod-name> -n <namespace>
```
Causas comuns: erro de configuração, secret não encontrado, liveness probe muito agressiva.

## ImagePullBackOff
Kubernetes não consegue baixar a imagem. Diagnóstico:
```bash
kubectl describe pod <pod-name> | grep -A5 Events
```
Causas: imagem não existe, tag errada, credenciais de registry não configuradas.
Solução: criar imagePullSecret e referenciar no pod.

## Pending (pod não sobe)
```bash
kubectl describe pod <pod-name>
kubectl get nodes -o wide
kubectl describe node <node-name>
```
Causas: recursos insuficientes (CPU/memory), nodeSelector sem match, PVC não bound.

## OOMKilled
Container excedeu o memory limit. Solução: aumentar limits.memory ou otimizar uso.

## kubectl comandos úteis
```bash
# Ver todos os recursos em um namespace
kubectl get all -n <namespace>
# Ver logs em tempo real
kubectl logs -f deployment/<name> -n <namespace>
# Executar shell em container
kubectl exec -it <pod-name> -- /bin/sh
# Port-forward para debug local
kubectl port-forward svc/<service> 8080:80
# Ver eventos recentes
kubectl get events --sort-by='.lastTimestamp' -n <namespace>
# Aplicar manifesto
kubectl apply -f manifest.yaml --dry-run=client
```