kubectl logs în Kubernetes (kubectl)

Depanare și acces kubectl 1.0+

Afișează sau urmărește în timp real ieșirea standard (stdout/stderr) a containerelor.

Sintaxă comandă
kubectl logs (POD | TIP/NUME) [-c CONTAINER] [-f] [--previous] [--since=DURATĂ] [--tail=N]

Ce face kubectl logs

Comanda kubectl logs citește tot ce a scris procesul din container la stdout și stderr. Poți indica direct numele unui pod (kubectl logs api-6f9b8d7c4-x7k2p) sau un controler precum deploy/api ori un selector -l app=api.

Dacă un pod este în CrashLoopBackOff, containerul curent abia a repornit și poate nu a apucat să scrie nimic; opțiunea -p / --previous îți arată logurile instanței anterioare care a crăpat și este aproape întotdeauna cheia depanării.

Dacă pod-ul are mai multe containere (de exemplu aplicația + un sidecar Envoy/Istio sau un initContainer), alegi containerul cu -c NUME sau le vezi pe toate cu --all-containers=true.

Opțiuni și argumente

Opțiune / Parametru Descriere
-f, --follow Urmărește logurile în timp real (ca tail -f).
-p, --previous Logurile containerului oprit anterior (esențial la CrashLoopBackOff).
-c, --container=NUME Alege containerul (sau initContainer-ul) dintr-un pod multi-container.
--all-containers=true Concatenează logurile tuturor containerelor din pod.
--tail=N Afișează doar ultimele N linii din fiecare container.
--since=DURATĂ Doar logurile mai noi de durata dată (ex. 5m, 1h, 30s).
--timestamps Prefixează fiecare linie cu timestamp-ul RFC3339 de la runtime.
-l, --selector=CH=VAL Agregă logurile tuturor pod-urilor care au eticheta respectivă, iar --prefix=true adaugă numele pod-ului în față.

Exemple

Exemplul 1: Ultimele 50 de linii urmărite live pe un Deployment

kubectl logs deploy/api --tail=50 -f

Ieșire în terminal

Found 3 pods, using pod/api-6f9b8d7c4-lm2vd
2026-04-20T09:10:02Z INFO  Server listening on :8080
2026-04-20T09:10:14Z INFO  GET /healthz 200 1.2ms
2026-04-20T09:10:19Z INFO  POST /v1/orders 201 18.4ms

Exemplul 2: Investigarea unui container care a crăpat (CrashLoopBackOff)

Opțiunea --previous afișează ieșirea procesului care s-a terminat cu eroare.

kubectl logs worker-5d4f7b9c8-q2n8r --previous

Ieșire în terminal

2026-04-20T09:05:11Z INFO  Starting queue consumer...
2026-04-20T09:05:14Z FATAL dial tcp 10.96.44.12:6379: connect: connection refused

Exemplul 3: Logurile din toate replicile unei aplicații în ultimele 10 minute

Cu --prefix vedem din ce pod și ce container provine fiecare linie.

kubectl logs -l app=api --all-containers=true --prefix=true --since=10m

Ieșire în terminal

[pod/api-6f9b8d7c4-lm2vd/api] 2026-04-20T09:11:01Z INFO  GET /v1/items 200
[pod/api-6f9b8d7c4-x7k2p/api] 2026-04-20T09:11:03Z WARN  Slow query (412ms)

Greșeli frecvente

  • Aplicația scrie logurile într-un fișier din container (de ex. /var/log/app.log) în loc de stdout/stderr: kubectl logs va fi gol.
  • La kubectl logs -l app=api există o limită implicită de 5 stream-uri concurente; dacă ai mai multe pod-uri, crește-o cu --max-log-requests=20.

Comenzi înrudite

  • kubectl describe: Afișează detaliile complete ale unei resurse, inclusiv evenimentele recente asociate.
  • kubectl events: Listează și urmărește evenimentele din cluster ordonate cronologic, cu filtrare după obiect sau severitate.
  • kubectl exec: Execută o comandă sau deschide un shell interactiv într-un container care rulează.
  • kubectl debug: Atașează un container efemer de depanare unui pod existent, îi face o copie sau deschide o sesiune pe un nod.