Exponera Kubernetes-tjänster för externa enheter
Om du arbetar med Kubernetes-program kan du behöva göra Kubernetes-tjänster tillgängliga för externa enheter så att de kan interagera med de arbetsbelastningar som du har distribuerat. Den här artikeln beskriver hur du exponerar Kubernetes-tjänster som körs på ett AKS Edge Essentials-kluster för externa enheter. Beroende på nätverkskonfigurationen som du använde för att konfigurera Kubernetes-klustret finns det två olika sätt att exponera tjänsterna:
- Kluster med en dator med portvidarebefordring.
- Skalbart kluster med extern virtuell växel.
Kommentar
Om du använder Kubernetes-tjänster måste du konfigurera parametrarna Init.ServiceIPRangeSize
och Init.ServiceIPRangeStart
under distributionen. Mer information finns i JSON-parametrar för distributionskonfiguration.
Alternativ 1: Kluster med en enskild dator med portvidarebefordring
AKS Edge Essentials klusterkonfiguration med en enda dator använder en intern virtuell växel för att hantera nätverk. Den här växeln säkerställer att all kommunikation mellan Windows-värdoperativsystemet och Linux/Windows-noden görs med hjälp av ett internt nätverk som inte är tillgängligt för externa enheter. Mer information om AKS Edge Essentials-nätverk finns i AKS Edge Essentials-nätverk.
Om du behöver komma åt en Kubernetes-tjänst från externa enheter konfigurerar du portvidarebefordring från Windows-värdoperativsystemet till Linux- eller Windows-noden. Om du använder en Kubernetes-tjänst av typen LoadBalancer måste du hämta rätt ServiceIp med hjälp kubectl get services
av kommandot . Om du använder en Kubernetes-tjänst av typen ClusterIp eller NodePort använder du IP-adressen för Noden Linux/Windows Kubernetes.
Om du vill konfigurera portvidarebefordring kan du använda cmdleten netsh
. Mer information om netsh
kommandosyntax, kontexter och formatering finns i Netsh-kommandosyntax, kontexter och formatering. Följ dessa steg för att konfigurera portvidarebefordring:
Öppna en upphöjd PowerShell-session.
Aktivera en brandväggsregelport för den externa porten för Windows-värdoperativsystemet. Mer information finns i New-NetFirewallRule:
New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
Hämta IP-adressen för måltjänsten i ditt namnområde:
kubectl get service -n <namespace>
Konfigurera portvidarebefordring från din Windows-värdoperativsystemport till Kubernetes-tjänstens IP-adress och port:
Parameter Description listen-port
Windows-värdoperativsystemets IPv4-port som används av externa enheter för att kommunicera med Kubernetes-tjänsten. listen-address
Anger den IPv4-adress som ska lyssnas på Windows-värdoperativsystemet. Om en adress inte har angetts är standardinställningen den lokala datorn. connect-port
Anger den IPv4-port som trafiken ska omdirigeras till. Den här porten ska vara Kubernetes-tjänstporten. connect-address
Anger den IPv4-adress som trafiken ska omdirigeras till. Den här porten ska vara Kubernetes-tjänstens IP-adress. netsh interface portproxy add v4tov4 listenport=<listen-port> listenaddress=<listen-address> connectport=<connect-port> connectaddress=<connect-address>
I följande exempelfigur finns det två Kubernetes-tjänster som körs på en Windows-enhet med IPv4-adressen 10.0.0.2 :
- Linux-Svc som kör en NodePort-tjänst med IP-adressen för Linux-noden
192.168.0.2
och porten30034
. Den här tjänsten ska kunna nås via port 8080 i Windows-värdoperativsystemet. - Win-Svc körs som en LoadBalancer-tjänst med IP-adress
192.168.0.5
och port30035
. Den här tjänsten ska kunna nås via port 8081 i Windows-värdoperativsystemet.
Om du vill aktivera externa enheter som har åtkomst till dessa tjänster konfigurerar du portvidarebefordring för båda tjänsterna. I det här scenariot kör du följande kommandon:
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
Varning
Om du inte använder en statisk nätverkskonfiguration kan IPv4-adressen för Windows-värdoperativsystemet ändras. Detta kan påverka konfigurationerna för portvidarebefordring och mål-IPv4-adressen som används av externa enheter. Om du vill minimera effekten av en IPv4-adressändring kan du använda en mer allmän listenaddress
.
Alternativ 2: skalbart kluster med extern virtuell växel
AKS Edge Essentials skalbar klusterkonfiguration använder en extern virtuell växel för att hantera nätverk. Eftersom noder körs på olika enheter måste alla noder vara anslutna till samma nätverk för att kommunicera med varandra. Mer information om AKS Edge Essentials-nätverk finns i AKS Edge Essentials-nätverk.
I den här konfigurationen är Kubernetes-noderna anslutna till det externa nätverket, så Kubernetes-tjänster kan nås av externa enheter utan behov av portvidarebefordring. Om du använder en Kubernetes-tjänst av typen LoadBalancer ska du se till att hämta rätt ServiceIp med hjälp kubectl get services
av kommandot om du använder en Kubernetes-tjänst av typen LoadBalancer. Om du använder en Kubernetes-tjänst av typen ClusterIp eller NodePort använder du IP-adressen för Noden Linux/Windows Kubernetes.
Kommentar
Det går att behålla det skalbara klustret till en enhet och använda konfigurationen för extern virtuell växel för att exponera Kubernetes-tjänster direkt för externa enheter i det externa nätverket utan att behöva vidarebefordra portar.