Zugriff auf Apps mit Knotenports (NodePorts) testen
Virtual Private Cloud Klassische Infrastruktur Satellite
Sie können Ihre containerisierte App für den Internetzugriff verfügbar machen, indem Sie die öffentliche IP-Adresse eines beliebigen Workerknotens in einem Red Hat OpenShift-Cluster verwenden und einen Knotenport (NodePort) zugänglich machen. Verwenden Sie diese Option zum Testen in Red Hat® OpenShift® on IBM Cloud® und zur Bereitstellung von öffentlichem Zugriff über einen kurzen Zeitraum.
Informationen zu Knotenports (NodePorts)
Machen Sie auf Ihrem Workerknoten einen öffentlichen Port zugänglich und verwenden Sie die öffentliche IP-Adresse des Workerknotens, um öffentlich über das Internet auf Ihren Service im Cluster zuzugreifen.
Wenn Sie Ihre App durch Erstellen eines Kubernetes Service vom Typ 'NodePort' zugänglich machen, wird dem Service eine Knotenportnummer im Zahlenbereich 30000-32767 und eine interne Cluster-IP-Adresse zugewiesen. Der NodePort-Service fungiert
als externer Einstiegspunkt für eingehende Anforderungen an die App. Der zugewiesene Knotenport (NodePort) wird in den kubeproxy-Einstellungen eines jeden Workerknotens im Cluster öffentlich zugänglich gemacht. Jeder Workerknoten
beginnt, am zugewiesenen Knotenport empfangsbereit für eingehende Anforderungen für den Service zu sein. Um vom Internet aus auf den Service zuzugreifen, können Sie die öffentliche IP-Adresse eines beliebigen Workerknotens verwenden, der bei
der Erstellung des Clusters zugewiesen wurde, sowie den NodePort im Format <IP_address>:<nodeport>. Wenn Sie auf den Service im privaten Netz zugreifen möchten, verwenden Sie anstelle der öffentlichen IP-Adresse die
private IP-Adresse eines beliebigen Workerknotens.
Das folgende Diagramm veranschaulicht, wie die Kommunikation vom Internet an eine App geleitet wird, wenn NodePort-Service konfiguriert ist.
-
Eine Anforderung wird an Ihre App gesendet, indem die öffentliche IP-Adresse Ihres Workerknotens und des Knotenports (NodePort) auf dem Workerknoten verwendet wird.
-
Die Anforderung wird automatisch an die interne Cluster-IP-Adresse und den internen Port des NodePort-Service weitergeleitet. Auf die interne Cluster-IP-Adresse kann nur aus dem Cluster selbst heraus zugegriffen werden.
-
kube-proxyleitet die Anforderung an den Kubernetes NodePort-Service für die App weiter. -
Die Anforderung wird an die private IP-Adresse des Pods weitergeleitet, auf dem die App bereitgestellt wird. Wenn mehrere App-Instanzen im Cluster bereitgestellt werden, leitet der NodePort-Service die Anforderungen zwischen den App-Pods weiter.
Die öffentliche IP-Adresse des Workerknotens ist nicht permanent. Wird ein Workerknoten entfernt oder neu erstellt, so wird ihm eine neue öffentliche IP-Adresse zugewiesen. Sie können den NodePort-Service verwenden, wenn Sie den öffentlichen Zugriff auf Ihre App testen möchten oder der öffentliche Zugriff nur über einen beschränkten Zeitraum erforderlich ist. Wenn Sie eine stabile öffentliche IP-Adresse und ein höheres Maß an Verfügbarkeit für Ihren Service benötigen, sollten Sie Ihre App über einen Netzausgleichsfunktions- (NLB-) Service oder über Ingress verfügbar machen.
Zugriff auf eine App mithilfe eines NodePort-Service aktivieren
Stellen Sie Ihre App als „ Kubernetes “-Dienst unter NodePort bereit.
Da Workerknoten in VPC-Clustern keine öffentliche IP-Adresse haben, können Sie nur dann über einen Knotenport auf eine App zugreifen, wenn Sie mit Ihrem privaten VPC-Netz verbunden sind, z. B. über eine VPN-Verbindung. Für den Zugriff auf eine App über das Internet müssen Sie eine VPC-Lastausgleichsfunktion oder einen Ingress-Service verwenden.
Falls Sie noch keine App parat haben, können Sie eine Beispiel-App namens „Guestbook“ aus dem „ Kubernetes “ verwenden.
Vorbereitende Schritte
- Rufen Sie Ihren Red Hat OpenShift-Cluster auf.
- VPC-Cluster: Lassen Sie Datenverkehrsanfragen zu, die an „ NodePorts “ auf Ihren Worker-Knoten weitergeleitet werden. Weitere Informationen finden Sie unter Verstehen von standardmäßig sicheren Cluster-VPC-Netzwerken und Erstellen und Verwalten von VPC-Sicherheitsgruppen.
Um einen Knotenport (NodePort) zu verwenden:
-
Definieren Sie in der Konfigurationsdatei Ihrer App einen „service“-Abschnitt.
Für das Beispiel 'Guestbook' ist in der Konfigurationsdatei ein Front-End-Serviceabschnitt vorhanden. Um die App 'Guestbook' extern verfügbar zu machen, müssen Sie dem Front-End-Serviceabschnitt den Typ 'NodePort' und für 'nodePort' eine Portnummer aus dem Bereich 30000 bis 32767 hinzufügen.
Beispiel
apiVersion: v1 kind: Service metadata: name: <my-nodeport-service> labels: <my-label-key>: <my-label-value> spec: selector: <my-selector-key>: <my-selector-value> type: NodePort ports: - port: <8081> # nodePort: <31514>Erläuterungen zu den Komponenten des NodePort-Service Komponente Beschreibung nameErsetzen Sie <my-nodeport-service>durch einen Namen für Ihren NodePort-Service. Erfahren Sie mehr über das Sichern der persönlichen Daten bei der Arbeit mit Kubernetes-Ressourcen.labelsErsetzen Sie <my-label-key>und<my-label-value>durch die Bezeichnung, die für Ihren Service verwendet werden soll.selectorErsetzen Sie <my-selector-key>und<my-selector-value>durch das Schlüssel/Wert-Paar, das Sie im Abschnittspec.template.metadata.labelsIhrer YAML-Bereitstellungsdatei verwendet haben. Wenn Sie den Service der Bereitstellung zuordnen möchten, muss der Selektor mit den Bereitstellungsbeschriftungen übereinstimmen.portErsetzen Sie <8081>durch den Port, an dem Ihr Service empfangsbereit ist.nodePortOptional: Ersetzen Sie <31514>durch einen NodePort im Bereich von 30000 - 32767. Geben Sie für 'NodePort' keine Portnummer an, die bereits von einem anderen Service verwendet wird. Wenn manuell keine Knotenportnummer festgelegt wird, so erfolgt die Zuweisung automatisch nach dem Zufallsprinzip.
Führen Sie den Befehloc get svcaus, um einen NodePort anzugeben und anzuzeigen, welche Nodeports bereits verwendet werden. Alle bereits belegten Knotenportnummern werden unter dem Feld Ports angezeigt. -
Speichern Sie die aktualisierte Konfigurationsdatei.
-
Bei Bereitstellung der App können Sie mithilfe der öffentlichen IP-Adresse jedes beliebigen Workerknotens und der für 'NodePort' festgelegten Portnummer die öffentliche URL erzeugen, mit der in einem Browser auf die App zugegriffen werden kann. Wenn Ihre Workerknoten nur mit einem privaten VLAN verbunden sind, wurde ein privater NodePort-Service erstellt, auf den über die private IP-Adresse des Warteschlangen-Workerknotens zugegriffen werden kann.
- Rufen Sie die öffentliche IP-Adresse für einen Workerknoten im Cluster ab. Wenn Sie auf den Workerknoten in einem privaten Netz zugreifen möchten oder über einen VPC-Cluster verfügen, rufen Sie stattdessen die private IP-Adresse ab.
ibmcloud oc worker ls --cluster CLUSTER_NAME ``` Ausgabe ```sh {: screen} ID Public IP Private IP Size State Status prod-dal10-pa215dcf5bbc0844a990fa6b0fcdbff286-w1 192.0.2.23 10.100.10.10 u3c.2x4 normal Ready prod-dal10-pa215dcf5bbc0844a990fa6b0fcdbff286-w2 192.0.2.27 10.100.10.15 u3c.2x4 normal Ready ``` 2. Falls für 'NodePort' nach dem Zufallsprinzip Portnummern zugewiesen wurden, ermitteln Sie eine Portnummer, die auf diese Art festgelegt wurde. ```sh {: pre} oc describe service <service_name> ``` Ausgabe ```sh {: screen} NAME: <service_name> Namespace: default Labels: run=<deployment_name> Selector: run=<deployment_name> Type: NodePort IP: 10.10.10.8 Port: <unset> 8080/TCP NodePort: <unset> 30872/TCP Endpoints: 172.30.171.87:8080 Session Affinity: None No events. ``` In diesem Beispiel lautet die Portnummer für 'NodePort' `30872`. Wenn im Abschnitt **Endpunkte** `<none>`angezeigt wird, überprüfen Sie die `<selectorkey>` und `<selectorvalue>`, die Sie im Abschnitt `spec.selector` des NodePort-Service verwenden. Stellen Sie sicher, dass es mit dem _Schlüssel/Wert_-Paar übereinstimmt, das Sie im Abschnitt `spec.template.metadata.labels` Ihrer YAML-Datei für die Bereitstellung verwendet haben. {: note} 3. Bilden Sie die URL mit einer der IP-Adressen des Workerknotens und der Portnummer für 'NodePort'. Beispiel: `http://192.0.2.23:30872`. Für VPC-Cluster müssen Sie mit dem privaten Netz zum Beispiel durch eine VPN-Verbindung verbunden sein, um auf die private IP-Adresse und den Knotenport (NodePort) des Workerknotens zuzugreifen. {: note}