Ce face kubectl exec
Comanda kubectl exec rulează un proces nou în interiorul unui container deja pornit. Cu opțiunile -i (stdin deschis) și -t (alocă un pseudo-TTY), adică -it, poți deschide un shell interactiv (sh sau bash) ca să inspectezi fișierele, variabilele de mediu sau conectivitatea de rețea din perspectiva pod-ului.
Separatorul -- este important: tot ce urmează după el este trimis ca argumente comenzii din container, nu interpretat ca opțiune a lui kubectl.
Dacă imaginea este distroless sau bazată pe scratch și nu conține /bin/sh, ori dacă pod-ul nici nu pornește, folosește kubectl debug (containere efemere) în loc de exec.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-i, --stdin |
Trimite intrarea standard (stdin) către container. |
-t, --tty |
Alocă un terminal interactiv (se combină uzual ca -it). |
-c, --container=NUME |
Alege containerul țintă când pod-ul are mai multe. |
-- |
Delimitator între opțiunile kubectl și comanda executată în container. |
Exemple
Exemplul 1: Deschiderea unui shell interactiv în pod
Pe imaginile Alpine sau slim în care nu există bash, folosește sh.
kubectl exec -it api-6f9b8d7c4-lm2vd -- sh
Ieșire în terminal
/app $ ls -la
total 28412
drwxr-xr-x 1 app app 4096 Apr 18 14:20 .
-rwxr-xr-x 1 app app 29081600 Apr 18 14:20 server
/app $ exit
Exemplul 2: Rularea unei singure comenzi fără shell interactiv
Verificăm variabilele de mediu sau răspunsul unui serviciu intern.
kubectl exec deploy/api -- printenv DATABASE_HOST
kubectl exec deploy/api -- wget -qO- http://localhost:8080/healthz
Ieșire în terminal
postgres.shop.svc.cluster.local
{"status":"ok","db":"connected"}
Greșeli frecvente
- Omiterea lui
--înainte de o comandă cu flag-uri (de ex.kubectl exec pod ls -la):kubectlîncearcă să interpreteze-laca opțiune proprie. - Modificarea manuală a fișierelor din container cu
exec: la prima repornire a pod-ului tot ce ai schimbat pe filesystemul efemer dispare.
Comenzi înrudite
kubectl debug: Atașează un container efemer de depanare unui pod existent, îi face o copie sau deschide o sesiune pe un nod.kubectl logs: Afișează sau urmărește în timp real ieșirea standard (stdout/stderr) a containerelor.kubectl cp: Copiază fișiere și directoare între mașina locală și un container dintr-un pod.kubectl port-forward: Redirecționează un port local de pe mașina ta către un Pod, Deployment sau Service din cluster.