kubectl port-forward în Kubernetes (kubectl)

Depanare și acces kubectl 1.0+

Redirecționează un port local de pe mașina ta către un Pod, Deployment sau Service din cluster.

Sintaxă comandă
kubectl port-forward (POD | service/NUME | deploy/NUME) [PORT_LOCAL:]PORT_CLUSTER [--address=IP]

Ce face kubectl port-forward

Comanda kubectl port-forward deschide un tunel securizat (prin conexiunea HTTPS către API server) de la un port de pe localhost-ul tău către un port dintr-un pod. Astfel poți accesa din browser sau dintr-un client local o aplicație, o bază de date sau o interfață de administrare (Prometheus, Grafana, Argo CD) fără a o expune public printr-un Service LoadBalancer sau un Ingress.

Poți viza direct un pod (pod/redis-0), un Deployment (deploy/api — alege automat unul dintre pod-uri) sau un Service (svc/api — poți folosi numărul ori numele portului din Service).

Comanda rulează în prim-plan cât timp tunelul este activ și se oprește cu Ctrl+C.

Opțiuni și argumente

Opțiune / Parametru Descriere
PORT_LOCAL:PORT_CLUSTER Ascultă pe PORT_LOCAL și trimite traficul către PORT_CLUSTER (de ex. 8080:80).
:PORT_CLUSTER Dacă omiți portul local, kubectl alege automat un port liber aleatoriu.
--address=127.0.0.1,0.0.0.0 Interfețele locale pe care ascultă (implicit doar 127.0.0.1 / ::1).
-n, --namespace=NS Namespace-ul în care se află resursa.

Exemple

Exemplul 1: Accesarea unui Service HTTP de pe localhost:8080

Cât timp comanda rulează, poți deschide http://localhost:8080 în browser sau cu curl.

kubectl port-forward svc/api 8080:80

Ieșire în terminal

Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
Handling connection for 8080

Exemplul 2: Conectarea cu un client local la PostgreSQL sau Redis din cluster

Mapăm portul local 15432 ca să nu intre în conflict cu un PostgreSQL instalat local pe 5432.

kubectl port-forward pod/postgres-0 15432:5432 -n shop

Ieșire în terminal

Forwarding from 127.0.0.1:15432 -> 5432
Forwarding from [::1]:15432 -> 5432

Greșeli frecvente

  • Chiar dacă scrii kubectl port-forward svc/api, tunelul se leagă la un singur pod din spatele Service-ului și nu face load-balancing între replici; dacă acel pod repornește, tunelul se întrerupe.
  • Folosirea lui --address=0.0.0.0 pe o rețea nesigură expune serviciul din cluster tuturor colegilor din LAN.

Comenzi înrudite

  • Obiectul Service: Oferă o adresă IP stabilă, un nume DNS intern și load-balancing către un grup de Pod-uri.
  • Obiectul Ingress: Expune servicii HTTP și HTTPS în afara clusterului, cu rutare după domeniu/cale și terminare TLS.
  • kubectl exec: Execută o comandă sau deschide un shell interactiv într-un container care rulează.
  • kubectl logs: Afișează sau urmărește în timp real ieșirea standard (stdout/stderr) a containerelor.