kubectl proxy în Kubernetes (kubectl)

Depanare și acces kubectl 1.0+

Pornește local un proxy către API-ul Kubernetes, care se ocupă de autentificare, ca să-l poți apela simplu cu curl sau din browser.

Sintaxă comandă
kubectl proxy [--port=8001] [--address=127.0.0.1] [--api-prefix=/]

Ce face kubectl proxy

kubectl proxy deschide pe calculatorul tău un server HTTP (implicit 127.0.0.1:8001) care trimite cererile către API-ul clusterului, folosind credențialele din kubeconfig. Poți apela astfel API-ul cu curl http://localhost:8001/api/v1/..., fără să gestionezi tokenuri sau certificate.

Prin același proxy ajungi și la Service-urile din cluster, pe calea /api/v1/namespaces/<ns>/services/<nume>:<port>/proxy/. Spre deosebire de kubectl port-forward, care deschide un tunel TCP spre un Pod sau Service, kubectl proxy lucrează doar cu HTTP și trece prin API server.

Parametri

Parametru Descriere
-p, --port Portul local (implicit 8001; 0 alege un port liber).
--address Adresa pe care ascultă (implicit 127.0.0.1).
--accept-hosts Expresie regulată cu gazdele acceptate.
--api-prefix Prefixul căilor (implicit /).
-w, --www Servește și fișiere statice dintr-un director.

Exemple

Exemplul 1: Interogarea API-ului cu curl

Proxy-ul rulează în fundal; apoi listăm numele Pod-urilor din magazin.

kubectl proxy &
curl -s http://localhost:8001/api/v1/namespaces/magazin/pods | jq -r '.items[].metadata.name'

Ieșire în terminal

Starting to serve on 127.0.0.1:8001
magazin-api-7d9f8c6b5d-4hq9z
magazin-api-7d9f8c6b5d-r7nfd
postgres-0

Exemplul 2: Accesarea unui Service intern prin proxy

Verificăm endpoint-ul de sănătate al API-ului, care nu este expus în afara clusterului.

curl -s http://localhost:8001/api/v1/namespaces/magazin/services/magazin-api:3000/proxy/sanatate

Ieșire în terminal

{"status":"ok","oras":"Iasi","versiune":"1.4.1"}

Greșeli frecvente

  • Pornirea proxy-ului cu --address=0.0.0.0: oricine din rețea poate apela API-ul clusterului cu drepturile tale, fără autentificare.
  • Așteptarea ca aplicațiile web complexe să meargă prin calea de proxy a Service-ului: linkurile absolute din pagini (/css/stil.css) nu au prefixul proxy-ului. Pentru aplicații web folosește kubectl port-forward.

Comenzi înrudite

  • kubectl attach: Se conectează la procesul principal al unui container care rulează, pentru a-i vedea ieșirea și, cu -i, a-i trimite intrare.
  • kubectl auth can-i: Verifică dacă tu (sau alt utilizator ori ServiceAccount) ai voie să faci o anumită acțiune în cluster, conform regulilor RBAC.