Introduzione
Port forward di Kubectl ti consente di accedere e interagire con i processi interni del cluster Kubernetes dal tuo localhost. Puoi utilizzare questo metodo per indagare sui problemi e modificare i tuoi servizi in locale senza che sia necessario esporli in anticipo.
Kubectl è il principale strumento da riga di comando per la gestione dei cluster Kubernetes. È essenziale per la distribuzione di applicazioni, l'amministrazione delle risorse del cluster e la creazione di framework complessi.
Questo breve tutorial mostra come utilizzare kubectl per il port forwarding su un pod in un cluster Kubernetes.

Prerequisiti
- Un cluster Kubernetes
- Un kubectl completamente configurato strumento da riga di comando
Come funziona Kubernetes Port Forwarding?
Anche se Kubernetes è un sistema di orchestrazione altamente automatizzato, il processo di port forwarding richiede l'input dell'utente diretto e ricorrente. Una connessione termina quando l'istanza del pod non riesce ed è necessario stabilire un nuovo inoltro immettendo manualmente lo stesso comando.
L'intero processo è semplificato dal fatto che kubectl ha già una funzionalità di port forwarding integrata.
- Un utente interagisce con Kubernetes utilizzando kubectl riga di comando sul loro computer locale.
- Il
port-forward
Il comando specifica il nome della risorsa del cluster e definisce il numero di porta a cui inoltrare la porta. - Di conseguenza, il server API Kubernetes stabilisce un'unica connessione HTTP tra il tuo localhost e la risorsa in esecuzione sul tuo cluster.
- L'utente è ora in grado di attivare direttamente quel pod specifico, per diagnosticare un problema o eseguire il debug, se necessario.
Il port forwarding è un metodo che richiede molto lavoro. Tuttavia, in alcuni casi, è l'unico modo per accedere alle risorse interne del cluster.
Comandi di base per il port forward di kubectl
Il port-forward
il comando stabilisce un tunnel dal pod di destinazione al tuo localhost. Il comando richiede di definire il tipo o il nome della risorsa, nonché i numeri di porta locale e remota:
kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
Se diversi pod corrispondono ai criteri del tipo/nome, per impostazione predefinita ne viene selezionato uno casuale. Per evitare tali incongruenze, definire un pod nel modo più preciso possibile. Puoi trovare il nome esatto del pod elencando manualmente i pod all'interno di uno spazio dei nomi digitando:
kubectl -n yournamespace get pods
L'elenco fornisce i nomi dei pod all'interno di quello spazio dei nomi.

port forward di kubectl a un pod specifico
Ad esempio, il comando seguente ti consentirà di accedere a una distribuzione MongoDB all'interno del tuo cluster. Il nome del pod è mongo-db-r3pl1ka3 e il numero di porta è 5762:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080:5762
L'API Kubernetes ora è in ascolto sulla porta locale 8080 e inoltra i dati alla porta 5762 sul pod definito.
Porta locale casuale
Ascolta su una porta casuale in locale e inoltra alla porta 5762 all'interno del pod specificato:
kubectl port-forward pod/mongo-db-r3pl1ka3 :5762
Porta locale e remota corrispondente
Ascolta e inoltra i dati utilizzando porte identiche (8080, 5762) sia localmente che all'interno del pod specifico:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080 5762
Indirizzo IP locale casuale
Ascolta sulla porta 8080 su qualsiasi indirizzo locale, inoltra alla porta 5762 nel pod specificato:
kubectl port-forward --address 0.0.0.0 pod/mongo-db-r3pl1ka3 8888:5762
Specifica l'indirizzo IP locale per il port forwarding
Ascolta sulla porta 8080 sull'host locale utilizzando l'IP definito, inoltra alla porta 5762 nel pod:
kubectl port-forward --address localhost,10.153.40.102 pod/mongo-db-r3pl1ka3 8080:5762
Utilizzare Deployment per selezionare il pod port forward
Ascolta e inoltra i dati utilizzando le stesse porte (8080 5762) sia localmente che all'interno del pod. La Distribuzione definisce quale pod deve essere utilizzato:
kubectl port-forward deployment/mydeployment 8080 5762
Consenti al servizio di definire il pod port forward
Ascolta e inoltra i dati utilizzando le stesse porte (8080 5762) sia localmente che all'interno del pod. Il Servizio seleziona quale pod deve essere utilizzato:
kubectl port-forward service/myservice 8080 5762