Freigeben über


Verfügbarmachen von Kubernetes-Diensten auf externen Geräten

Wenn Sie mit Kubernetes-Anwendungen arbeiten, müssen Sie möglicherweise Kubernetes-Dienste für externe Geräte zugänglich machen, damit sie mit den von Ihnen bereitgestellten Workloads interagieren können. In diesem Artikel wird erläutert, wie Kubernetes-Dienste verfügbar gemacht werden, die auf einem AKS Edge Essentials-Cluster auf externen Geräten ausgeführt werden. Abhängig von der Netzwerkkonfiguration, die Sie zum Einrichten des Kubernetes-Clusters verwendet haben, gibt es zwei verschiedene Möglichkeiten, die Dienste verfügbar zu machen:

  1. Einzelner Computercluster mit Portweiterleitung.
  2. Skalierbarer Cluster mit externem virtuellen Switch.

Hinweis

Wenn Sie Kubernetes-Dienste verwenden, stellen Sie sicher, dass Sie die Parameter Init.ServiceIPRangeStart während der Init.ServiceIPRangeSize Bereitstellung einrichten. Weitere Informationen finden Sie unter JSON-Parameter für die Bereitstellungskonfiguration.

Option 1: Einzelcomputercluster mit Portweiterleitung

AKS Edge Essentials Single Machine Cluster Configuration verwendet einen internen virtuellen Switch zum Verwalten von Netzwerken. Dieser Switch stellt sicher, dass die gesamte Kommunikation zwischen dem Windows-Hostbetriebssystem und dem Linux/Windows-Knoten über ein internes Netzwerk erfolgt, auf das nicht von externen Geräten zugegriffen werden kann. Weitere Informationen zur AKS Edge Essentials-Netztechnologie finden Sie unter AKS Edge Essentials-Netztechnologie.

Wenn Sie von externen Geräten aus auf einen Kubernetes-Dienst zugreifen müssen, richten Sie die Portweiterleitung vom Windows-Hostbetriebssystem zum Linux- oder Windows-Knoten ein. Wenn Sie einen Kubernetes-Dienst vom Typ LoadBalancer verwenden, stellen Sie sicher, dass Sie den richtigen ServiceIp mithilfe des kubectl get services Befehls abrufen. Wenn Sie einen Kubernetes-Dienst vom Typ ClusterIp oder NodePort verwenden, verwenden Sie die IP-Adresse des Linux/Windows Kubernetes-Knotens.

Zum Einrichten der Portweiterleitung können Sie das netsh Cmdlet verwenden. Weitere Informationen zu netsh Befehlssyntax, Kontexten und Formatierungen finden Sie unter Netsh-Befehlssyntax, Kontexte und Formatierungen. Führen Sie die folgenden Schritte aus, um die Portweiterleitung einzurichten:

  1. Öffnen Sie eine PowerShell-Sitzung mit erhöhten Rechten.

  2. Aktivieren Sie einen Firewallregelport für den externen Windows-Hostbetriebssystem-Port. Weitere Informationen finden Sie unter New-NetFirewallRule:

    New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
    
  3. Rufen Sie die IP-Adresse des zielbezogenen Diensts in Ihrem Namespace ab:

    kubectl get service -n <namespace>
    
  4. Richten Sie die Portweiterleitung von Ihrem Windows-Hostbetriebssystemport an die Ip-Adresse und den Port des Kubernetes-Diensts ein:

    Parameter Beschreibung
    listen-port Windows Host OS IPv4-Port, der von externen Geräten für die Kommunikation mit dem Kubernetes-Dienst verwendet wird.
    listen-address Gibt die IPv4-Adresse an, für die das Windows-Hostbetriebssystem überwacht werden soll. Wenn keine Adresse angegeben ist, ist der Standardwert der lokale Computer.
    connect-port Gibt den IPv4-Port an, an den der Datenverkehr umgeleitet werden soll. Dieser Port sollte der Kubernetes-Dienstport sein.
    connect-address Gibt die IPv4-Adresse an, an die der Datenverkehr umgeleitet werden soll. Dieser Port sollte die Ip-Adresse des Kubernetes-Diensts sein.
    netsh interface portproxy add v4tov4 listenport=<listen-port> listenaddress=<listen-address> connectport=<connect-port> connectaddress=<connect-address>
    

In der folgenden Beispiel abbildung gibt es zwei Kubernetes-Dienste, die auf einem Windows-Gerät mit der IPv4-Adresse 10.0.0.2 ausgeführt werden:

  • Linux-Svc , der einen NodePort-Dienst mit IP-Adresse des Linux-Knotens 192.168.0.2 und -Ports 30034ausführt. Dieser Dienst sollte über Port 8080 im Windows-Hostbetriebssystem erreichbar sein.
  • Win-Svc wird als LoadBalancer-Dienst mit IP-Adresse 192.168.0.5 und Port 30035ausgeführt. Dieser Dienst sollte über Port 8081 im Windows-Hostbetriebssystem erreichbar sein.

Um externen Geräten den Zugriff auf diese Dienste zu ermöglichen, richten Sie die Portweiterleitung für beide Dienste ein. Führen Sie für dieses Szenario die folgenden Befehle aus:

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=10.0.0.2 connectport=30034 connectaddress=192.168.0.2
netsh interface portproxy add v4tov4 listenport=8081 listenaddress=10.0.0.2 connectport=30035 connectaddress=192.168.0.5

Screenshot der internen Netzwerkportweiterleitung.

Warnung

Wenn Sie keine statische Netzwerkkonfiguration verwenden, kann sich die IPv4-Adresse des Windows-Hostbetriebssystems ändern. Dies kann sich auf Ihre Portweiterleitungskonfigurationen und die ziel-IPv4-Adresse auswirken, die von externen Geräten verwendet wird. Um die Auswirkungen einer IPv4-Adressänderung zu minimieren, können Sie eine allgemeinere listenaddressVerwenden.

Option 2: skalierbarer Cluster mit externem virtuellen Switch

Die skalierbare Clusterkonfiguration von AKS Edge Essentials verwendet einen externen virtuellen Switch zum Verwalten von Netzwerken. Da Knoten auf unterschiedlichen Geräten ausgeführt werden, müssen alle Knoten mit demselben Netzwerk verbunden sein, um miteinander zu kommunizieren. Weitere Informationen zur AKS Edge Essentials-Netztechnologie finden Sie unter AKS Edge Essentials-Netztechnologie.

In dieser Konfiguration sind die Kubernetes-Knoten mit dem externen Netzwerk verbunden, sodass Kubernetes-Dienste von externen Geräten erreichbar sind, ohne dass die Portweiterleitung erforderlich ist. Wenn Sie einen Kubernetes-Dienst vom Typ "LoadBalancer" verwenden, stellen Sie sicher, dass Sie den richtigen ServiceIp mithilfe des kubectl get services Befehls abrufen. Wenn Sie einen Kubernetes-Dienst vom Typ ClusterIp oder NodePort verwenden, verwenden Sie die IP-Adresse des Linux/Windows Kubernetes-Knotens.

Hinweis

Es ist möglich, den skalierbaren Cluster auf einem Gerät beizubehalten und die konfiguration für externe virtuelle Switche zu verwenden, um Kubernetes-Dienste direkt für externe Geräte im externen Netzwerk verfügbar zu machen, ohne dass die Portweiterleitung erforderlich ist.

Nächste Schritte