Como ver os logs de um pod no Kubernetes
O kubectl logs lê o que o container escreve na saída padrão (stdout e stderr). Estes são os comandos para os casos do dia a dia: um container específico, a execução que morreu, ao vivo, só a última hora ou vários pods de uma vez.
O log de um pod
kubectl logs <pod> -n <namespace>
kubectl logs <pod> -n <namespace> -c <container>
kubectl logs <pod> -n <namespace> --all-containers Ao vivo, com hora
kubectl logs -f <pod> -n <namespace> --timestamps
kubectl logs <pod> -n <namespace> --tail=200 --since=1h A execução que morreu
Depois de um restart (CrashLoopBackOff, OOMKilled), o log atual é da execução nova. O --previous mostra o da anterior:
kubectl logs <pod> -n <namespace> --previous Vários pods de uma vez
Por label, ou pelo Deployment (que escolhe um dos pods). Com label, o kubectl abre no máximo 5 conexões ao vivo por padrão; suba com --max-log-requests:
kubectl logs -l app=<app> -n <namespace> --prefix --tail=50
kubectl logs deployment/<nome> -n <namespace> Init containers e Jobs
kubectl logs <pod> -n <namespace> -c <init-container>
kubectl logs job/<job> -n <namespace> O que o kubectl logs não mostra
- Arquivos de log gravados dentro do container: só o que vai para stdout e stderr.
- Logs de um pod apagado: quando o pod some, o log some junto. Para histórico, use uma solução centralizada (Loki, Elastic, o Log Analytics do AKS ou o CloudWatch do EKS).
- O log de execuções mais antigas que a anterior: o kubelet guarda só a atual e a última.
Sem terminal, no Kubepier
No plano Pro do Kubepier, os logs ao vivo abrem direto do pod, com hora em cada linha e escolha do container, de qualquer cluster, no navegador ou no celular, sem kubectl nem kubeconfig na máquina.