Einführung
Kubectl-Portweiterleitung ermöglicht Ihnen den Zugriff auf und die Interaktion mit internen Kubernetes-Clusterprozessen von Ihrem lokalen Host aus. Sie können diese Methode verwenden, um Probleme zu untersuchen und Ihre Dienste lokal anzupassen, ohne sie vorher aufdecken zu müssen.
Kubectl ist das wichtigste Befehlszeilentool zum Verwalten von Kubernetes-Clustern. Es ist unerlässlich für die Bereitstellung von Anwendungen, die Verwaltung von Cluster-Ressourcen und den Aufbau komplexer Frameworks.
Dieses kurze Tutorial zeigt Ihnen, wie Sie kubectl für die Portweiterleitung an einen Pod in einem Kubernetes-Cluster verwenden.

Voraussetzungen
- Ein Kubernetes-Cluster
- Ein vollständig konfigurierteskubectl Befehlszeilentool
Wie funktioniert die Kubernetes-Portweiterleitung?
Obwohl Kubernetes ein hochgradig automatisiertes Orchestrierungssystem ist, erfordert der Portweiterleitungsprozess direkte und wiederkehrende Benutzereingaben. Eine Verbindung wird beendet, sobald die Pod-Instanz ausfällt, und es ist notwendig, eine neue Weiterleitung einzurichten, indem Sie denselben Befehl manuell eingeben.
Der gesamte Vorgang wird dadurch vereinfacht, dass kubectl hat bereits eine eingebaute Portweiterleitungsfunktion.
- Ein Benutzer interagiert mit Kubernetes mithilfe von kubectl Befehlszeile auf ihrem lokalen Rechner.
- Die
port-forward
Der Befehl gibt den Namen der Cluster-Ressource an und definiert die Portnummer für die Port-Weiterleitung. - Infolgedessen stellt der Kubernetes-API-Server eine einzige HTTP-Verbindung zwischen Ihrem lokalen Host und der Ressource her, die auf Ihrem Cluster ausgeführt wird.
- Der Benutzer kann jetzt diesen bestimmten Pod direkt aktivieren, um entweder ein Problem zu diagnostizieren oder bei Bedarf zu debuggen.
Portweiterleitung ist eine arbeitsintensive Methode. In einigen Fällen ist dies jedoch die einzige Möglichkeit, auf interne Clusterressourcen zuzugreifen.
Grundlegende kubectl-Portweiterleitungsbefehle
Die port-forward
Der Befehl richtet einen Tunnel vom Ziel-Pod zu Ihrem lokalen Host ein. Der Befehl erfordert, dass Sie den Typ oder Namen der Ressource sowie lokale und entfernte Portnummern definieren:
kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
Wenn mehrere Pods den Typ-/Namenskriterien entsprechen, wird standardmäßig ein zufälliger ausgewählt. Um solche Inkonsistenzen zu vermeiden, definieren Sie einen Pod so genau wie möglich. Sie können den genauen Pod-Namen finden, indem Sie Pods innerhalb eines Namespace manuell auflisten indem Sie Folgendes eingeben:
kubectl -n yournamespace get pods
Die Liste enthält die Namen der Pods innerhalb dieses Namensraums.

kubectl-Portweiterleitung an einen bestimmten Pod
Mit dem folgenden Befehl können Sie beispielsweise auf eine MongoDB-Bereitstellung in Ihrem Cluster zugreifen. Der Name des Pods lautet mongo-db-r3pl1ka3 , und die Portnummer ist 5762:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080:5762
Die Kubernetes-API lauscht jetzt auf dem lokalen Port 8080 und leitet Daten an Port 5762 auf dem definierten Pod weiter.
Zufälliger lokaler Port
Lauschen Sie lokal auf einem zufälligen Port und leiten Sie innerhalb des angegebenen Pods an Port 5762 weiter:
kubectl port-forward pod/mongo-db-r3pl1ka3 :5762
Entsprechender lokaler und entfernter Port
Daten mit identischen Ports (8080, 5762) abhören und weiterleiten, sowohl lokal als auch innerhalb des spezifischen Pods:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080 5762
Zufällige lokale IP-Adresse
Hören Sie Port 8080 an einer beliebigen lokalen Adresse ab und leiten Sie an Port 5762 im angegebenen Pod weiter:
kubectl port-forward --address 0.0.0.0 pod/mongo-db-r3pl1ka3 8888:5762
Geben Sie die lokale IP-Adresse für die Portweiterleitung an
Hören Sie Port 8080 auf dem Localhost mit der definierten IP ab und leiten Sie ihn an Port 5762 im Pod weiter:
kubectl port-forward --address localhost,10.153.40.102 pod/mongo-db-r3pl1ka3 8080:5762
Bereitstellung verwenden, um Portweiterleitungs-Pod auszuwählen
Überwachen und leiten Sie Daten über dieselben Ports (8080 5762) sowohl lokal als auch innerhalb des Pods weiter. Die Bereitstellung legt fest, welcher Pod verwendet werden soll:
kubectl port-forward deployment/mydeployment 8080 5762
Dienst erlauben, Portweiterleitungs-Pod zu definieren
Überwachen und leiten Sie Daten über dieselben Ports (8080 5762) sowohl lokal als auch innerhalb des Pods weiter. Der Dienst wählt aus, welcher Pod verwendet werden soll:
kubectl port-forward service/myservice 8080 5762