Uwidacznianie usług Kubernetes na urządzeniach zewnętrznych
Jeśli pracujesz z aplikacjami Kubernetes, może być konieczne udostępnienie usług Kubernetes urządzeniom zewnętrznym, aby mogły wchodzić w interakcje z wdrożonym obciążeniami. W tym artykule wyjaśniono, jak uwidaczniać usługi Kubernetes uruchomione w klastrze AKS Edge Essentials na urządzeniach zewnętrznych. W zależności od konfiguracji sieci użytej do skonfigurowania klastra Kubernetes istnieją dwa różne sposoby uwidocznienia usług:
- Klaster pojedynczej maszyny z przekazywaniem portów.
- Skalowalny klaster z zewnętrznym przełącznikiem wirtualnym.
Uwaga
Jeśli używasz usług Kubernetes, pamiętaj o skonfigurowaniu Init.ServiceIPRangeSize
parametrów i Init.ServiceIPRangeStart
podczas wdrażania. Aby uzyskać więcej informacji, zobacz Deployment configuration JSON parameters (Parametry JSON konfiguracji wdrożenia).
Opcja 1: klaster pojedynczej maszyny z przekazywaniem portów
Konfiguracja klastra pojedynczego maszyny usługi AKS Edge Essentials używa wewnętrznego przełącznika wirtualnego do zarządzania siecią. Ten przełącznik zapewnia, że cała komunikacja między systemem operacyjnym hosta systemu Windows a węzłem Systemu Linux/Windows odbywa się przy użyciu sieci wewnętrznej, która nie jest dostępna dla urządzeń zewnętrznych. Aby uzyskać więcej informacji na temat sieci AKS Edge Essentials, zobacz Sieć AKS Edge Essentials.
Jeśli musisz uzyskać dostęp do usługi Kubernetes z urządzeń zewnętrznych, skonfiguruj przekazywanie portów z systemu operacyjnego hosta systemu Windows do węzła systemu Linux lub Windows. Jeśli używasz usługi Kubernetes typu LoadBalancer, upewnij się, że uzyskasz poprawną usługę ServiceIp przy użyciu kubectl get services
polecenia . Jeśli używasz usługi Kubernetes typu ClusterIp lub NodePort, użyj adresu IP węzła Kubernetes systemu Linux/Windows.
Aby skonfigurować przekazywanie portów, możesz użyć netsh
polecenia cmdlet . Aby uzyskać więcej informacji na temat netsh
składni poleceń, kontekstów i formatowania, zobacz Składnia poleceń netsh, konteksty i formatowanie. Wykonaj następujące kroki, aby skonfigurować przekierowywanie portów:
Otwórz sesję programu PowerShell z podwyższonym poziomem uprawnień.
Włącz port reguły zapory dla portu zewnętrznego systemu operacyjnego hosta systemu Windows. Aby uzyskać więcej informacji, zobacz New-NetFirewallRule:
New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
Pobierz adres IP docelowej usługi w przestrzeni nazw:
kubectl get service -n <namespace>
Skonfiguruj przekierowywanie portów z portu systemu operacyjnego hosta systemu Windows do adresu IP i portu usługi Kubernetes:
Parametr Opis listen-port
Port IPv4 systemu Windows hosta systemu Windows używany przez urządzenia zewnętrzne do komunikowania się z usługą Kubernetes. listen-address
Określa adres IPv4, dla którego należy nasłuchiwać w systemie operacyjnym hosta systemu Windows. Jeśli adres nie jest określony, wartość domyślna to komputer lokalny. connect-port
Określa port IPv4, do którego ma zostać przekierowany ruch. Ten port powinien być portem usługi Kubernetes. connect-address
Określa adres IPv4, do którego ma zostać przekierowany ruch. Ten port powinien być adresem IP usługi Kubernetes. netsh interface portproxy add v4tov4 listenport=<listen-port> listenaddress=<listen-address> connectport=<connect-port> connectaddress=<connect-address>
Na poniższym przykładzie przedstawiono dwie usługi Kubernetes uruchomione na urządzeniu z systemem Windows z adresem 10.0.0.2 IPv4:
- Linux-Svc z uruchomioną usługą NodePort z adresem IP węzła
192.168.0.2
systemu Linux i portu30034
. Ta usługa powinna być osiągalna przez port 8080 w systemie operacyjnym hosta systemu Windows. - Win-Svc działa jako usługa LoadBalancer z adresem
192.168.0.5
IP i portem30035
. Ta usługa powinna być osiągalna przez port 8081 w systemie operacyjnym hosta systemu Windows.
Aby umożliwić urządzeniom zewnętrznym uzyskiwanie dostępu do tych usług, skonfiguruj przekazywanie portów dla obu usług. W tym scenariuszu uruchom następujące polecenia:
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
Ostrzeżenie
Jeśli nie używasz konfiguracji sieci statycznej, adres IPv4 systemu operacyjnego hosta systemu Windows może ulec zmianie. Może to mieć wpływ na konfiguracje przekierowania portów i docelowy adres IPv4 używany przez urządzenia zewnętrzne. Aby zminimalizować wpływ zmiany adresu IPv4, można użyć bardziej ogólnego listenaddress
.
Opcja 2: skalowalny klaster z zewnętrznym przełącznikiem wirtualnym
Skalowalna konfiguracja klastra usługi AKS Edge Essentials używa zewnętrznego przełącznika wirtualnego do zarządzania siecią. Ponieważ węzły działają wewnątrz różnych urządzeń, wszystkie węzły muszą być połączone z tą samą siecią, aby komunikować się ze sobą. Aby uzyskać więcej informacji na temat sieci AKS Edge Essentials, zobacz Sieć AKS Edge Essentials.
W tej konfiguracji węzły Kubernetes są połączone z siecią zewnętrzną, więc usługi Kubernetes są dostępne przez urządzenia zewnętrzne bez konieczności przekazywania portów. Poniższe wskazówki dotyczące opcji 1, jeśli używasz usługi Kubernetes typu LoadBalancer, upewnij się, że uzyskasz poprawną usługę ServiceIp przy użyciu kubectl get services
polecenia . Jeśli używasz usługi Kubernetes typu ClusterIp lub NodePort, użyj adresu IP węzła Kubernetes systemu Linux/Windows.
Uwaga
Można zachować skalowalny klaster na jednym urządzeniu i użyć zewnętrznej konfiguracji przełącznika wirtualnego, aby uwidocznić usługi Kubernetes bezpośrednio na urządzeniach zewnętrznych w sieci zewnętrznej bez konieczności przekazywania portów.