Kubernetes-services beschikbaar maken voor externe apparaten
Als u met Kubernetes-toepassingen werkt, moet u Kubernetes-services mogelijk toegankelijk maken voor externe apparaten, zodat ze kunnen communiceren met de workloads die u hebt geïmplementeerd. In dit artikel wordt uitgelegd hoe u Kubernetes-services die worden uitgevoerd op een AKS Edge Essentials-cluster beschikbaar maakt voor externe apparaten. Afhankelijk van de netwerkconfiguratie die u hebt gebruikt om het Kubernetes-cluster in te stellen, zijn er twee verschillende manieren om de services beschikbaar te maken:
- Cluster met één machine met port forwarding.
- Schaalbaar cluster met externe virtuele switch.
Notitie
Als u Kubernetes-services gebruikt, moet u de en Init.ServiceIPRangeStart
parameters instellen tijdens de Init.ServiceIPRangeSize
implementatie. Zie JSON-parameters voor implementatieconfiguratie voor meer informatie.
Optie 1: cluster met één machine met doorsturen via poort
AKS Edge Essentials-clusterconfiguratie met één machine maakt gebruik van een interne virtuele switch voor het beheren van netwerken. Deze switch zorgt ervoor dat alle communicatie tussen het Windows-hostbesturingssysteem en het Linux-/Windows-knooppunt wordt uitgevoerd met behulp van een intern netwerk dat niet toegankelijk is voor externe apparaten. Zie AKS Edge Essentials-netwerken voor meer informatie over AKS Edge Essentials-netwerken.
Als u toegang wilt krijgen tot een Kubernetes-service vanaf externe apparaten, stelt u port forwarding van het Windows-hostbesturingssysteem in op het Linux- of Windows-knooppunt. Als u een Kubernetes-service van het type LoadBalancer gebruikt, moet u de juiste ServiceIp verkrijgen met behulp van de kubectl get services
opdracht. Als u een Kubernetes-service van het type ClusterIp of NodePort gebruikt, gebruikt u het IP-adres van het Linux-/Windows Kubernetes-knooppunt.
Als u port forwarding wilt instellen, kunt u de netsh
cmdlet gebruiken. Zie de netsh-opdrachtsyntaxis, contexten en opmaak voor meer informatie over netsh
opdrachtsyntaxis, contexten en opmaak. Volg deze stappen om port forwarding in te stellen:
Open een PowerShell-sessie met verhoogde bevoegdheid.
Schakel een poort voor een firewallregel in voor de externe poort van het Windows-host besturingssysteem. Zie New-NetFirewallRule voor meer informatie:
New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
Haal het IP-adres van de doelservice op in uw naamruimte:
kubectl get service -n <namespace>
Stel het doorsturen van de poort van het Windows-hostbesturingssysteem in op het IP-adres en de poort van de Kubernetes-service:
Parameter Description listen-port
IPv4-poort van het Windows-hostbesturingssysteem die door externe apparaten wordt gebruikt om te communiceren met de Kubernetes-service. listen-address
Hiermee geeft u het IPv4-adres op waarvoor moet worden geluisterd op het Windows-host-besturingssysteem. Als er geen adres is opgegeven, is de standaardwaarde de lokale computer. connect-port
Hiermee geeft u de IPv4-poort op waarnaar het verkeer moet worden omgeleid. Deze poort moet de Kubernetes-servicepoort zijn. connect-address
Hiermee geeft u het IPv4-adres op waarnaar het verkeer moet worden omgeleid. Deze poort moet het IP-adres van de Kubernetes-service zijn. netsh interface portproxy add v4tov4 listenport=<listen-port> listenaddress=<listen-address> connectport=<connect-port> connectaddress=<connect-address>
In de volgende voorbeeldafbeelding worden er twee Kubernetes-services uitgevoerd op een Windows-apparaat met het IPv4-adres 10.0.0.2 :
- Linux-Svc voert een NodePort-service uit met het IP-adres van het Linux-knooppunt
192.168.0.2
en de poort30034
. Deze service moet bereikbaar zijn via poort 8080 in het Besturingssysteem van de Windows-host. - Win-Svc wordt uitgevoerd als een LoadBalancer-service met IP-adres
192.168.0.5
en poort30035
. Deze service moet bereikbaar zijn via poort 8081 in het Windows-host besturingssysteem.
Als u externe apparaten toegang wilt geven tot deze services, stelt u port forwarding in voor beide services. Voer voor dit scenario de volgende opdrachten uit:
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
Waarschuwing
Als u geen statische netwerkconfiguratie gebruikt, kan het IPv4-adres van het Windows-host-besturingssysteem worden gewijzigd. Dit kan van invloed zijn op de configuraties voor het doorsturen van poorten en het doel-IPv4-adres dat door externe apparaten wordt gebruikt. Als u de impact van een IPv4-adreswijziging wilt minimaliseren, kunt u een algemener listenaddress
adres gebruiken.
Optie 2: schaalbaar cluster met externe virtuele switch
De schaalbare clusterconfiguratie van AKS Edge Essentials maakt gebruik van een externe virtuele switch om netwerken te beheren. Omdat knooppunten binnen verschillende apparaten worden uitgevoerd, moeten alle knooppunten zijn verbonden met hetzelfde netwerk om met elkaar te communiceren. Zie AKS Edge Essentials-netwerken voor meer informatie over AKS Edge Essentials-netwerken.
In deze configuratie zijn de Kubernetes-knooppunten verbonden met het externe netwerk, zodat Kubernetes-services bereikbaar zijn door externe apparaten zonder dat port forwarding nodig is. Als u een Kubernetes-service van het type LoadBalancer gebruikt, moet u de juiste ServiceIp verkrijgen met behulp van de kubectl get services
opdracht. Als u een Kubernetes-service van het type ClusterIp of NodePort gebruikt, gebruikt u het IP-adres van het Linux-/Windows Kubernetes-knooppunt.
Notitie
Het is mogelijk om het schaalbare cluster op één apparaat te houden en de configuratie van de externe virtuele switch te gebruiken om Kubernetes-services rechtstreeks beschikbaar te maken voor externe apparaten in het externe netwerk zonder dat port forwarding nodig is.