kubectl logs

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.

Começar grátis