kubectl get în Kubernetes (kubectl)

Interogare resurse kubectl 1.0+

Listează una sau mai multe resurse, într-un tabel sau în format YAML/JSON.

Sintaxă comandă
kubectl get TIP[/NUME] [NUME...] [-n NS | -A] [-o wide|yaml|json|name] [-l selector]

Ce face kubectl get

Comanda kubectl get este cea pe care o vei folosi cel mai des: afișează resursele de un anumit tip (pod-uri, deployment-uri, servicii, noduri etc.) sub formă de tabel, cu cele mai importante coloane. Poți folosi numele complet al tipului (pods), forma la singular (pod) sau prescurtarea (po).

Implicit sunt afișate doar resursele din namespace-ul curent; cu -n NUME alegi alt namespace, iar cu -A (--all-namespaces) le vezi pe toate. Cu -o yaml sau -o json obții obiectul complet, așa cum este stocat în cluster, inclusiv secțiunea status.

Opțiunea -w (--watch) ține comanda deschisă și afișează fiecare schimbare, ideal când urmărești pornirea unui deployment. Pentru extragerea unor câmpuri anume în scripturi, folosește -o jsonpath sau -o custom-columns.

Opțiuni și argumente

Opțiune / Parametru Descriere
-n, --namespace=NS Namespace-ul din care se listează resursele.
-A, --all-namespaces Listează resursele din toate namespace-urile (adaugă coloana NAMESPACE).
-o wide Coloane suplimentare: pentru pod-uri, IP-ul și nodul pe care rulează.
-o yaml|json Afișează obiectul complet în format YAML sau JSON.
-o jsonpath='{...}' Extrage doar anumite câmpuri, de exemplu {.items[*].metadata.name}.
-l, --selector=CHEIE=VALOARE Filtrează după etichete (labels), de exemplu -l app=web,tier!=cache.
--field-selector=CÂMP=VALOARE Filtrează după câmpuri, de exemplu status.phase=Running.
-w, --watch După listare, urmărește și afișează schimbările în timp real.

Exemple

Exemplul 1: Pod-urile din namespace-ul curent, cu IP și nod

Coloana READY arată câte containere din pod sunt gata din total, iar RESTARTS de câte ori au fost repornite.

kubectl get pods -o wide

Ieșire în terminal

NAME                   READY   STATUS             RESTARTS        AGE   IP            NODE       NOMINATED NODE   READINESS GATES
web-7c5ddbdf54-4xkqp   1/1     Running            0               2d    10.244.1.12   worker-1   <none>           <none>
web-7c5ddbdf54-9tz2m   1/1     Running            0               2d    10.244.2.8    worker-2   <none>           <none>
api-6f9b8d7c4-lm2vd    0/1     CrashLoopBackOff   7 (2m13s ago)   15m   10.244.1.15   worker-1   <none>           <none>
redis-0                1/1     Running            0               5d    10.244.2.3    worker-2   <none>           <none>

Exemplul 2: Mai multe tipuri de resurse, filtrate după etichetă

Tipurile se separă prin virgulă; filtrul -l se aplică tuturor.

kubectl get deploy,svc -l app=web -n shop

Ieșire în terminal

NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/web   2/2     2            2           2d

NAME          TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/web   ClusterIP   10.96.142.17   <none>        80/TCP    2d

Exemplul 3: Extragerea imaginilor folosite cu jsonpath

Afișăm, pentru fiecare pod, numele și imaginea primului container.

kubectl get pods -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[0].image}{"\n"}{end}'

Ieșire în terminal

web-7c5ddbdf54-4xkqp	nginx:1.27
web-7c5ddbdf54-9tz2m	nginx:1.27
api-6f9b8d7c4-lm2vd	registry.example.ro/shop/api:2.4.1
redis-0	redis:7.2

Greșeli frecvente

  • Căutarea unui pod în namespace-ul greșit și concluzia că „nu există”. Încearcă kubectl get pods -A | grep nume.
  • Folosirea kubectl get all crezând că afișează absolut tot: în realitate omite ConfigMap-uri, Secret-uri, Ingress-uri, PersistentVolumeClaim-uri și resursele custom.
  • Ignorarea coloanei RESTARTS: un pod în starea Running cu zeci de reporniri are o problemă reală, care trebuie investigată cu kubectl logs --previous.

Comenzi înrudite

  • kubectl describe: Afișează detaliile complete ale unei resurse, inclusiv evenimentele recente asociate.
  • kubectl logs: Afișează sau urmărește în timp real ieșirea standard (stdout/stderr) a containerelor.
  • kubectl api-resources: Listează toate tipurile de resurse disponibile în cluster, cu prescurtări și grupuri API.
  • kubectl label / kubectl annotate: Adaugă, modifică sau șterge etichete (labels) și adnotări (annotations) pe orice resursă.