Udostępnij przez


Tworzenie klastra usługi Azure Kubernetes Service z integracją serwera API z siecią VNet

Klaster usługi Azure Kubernetes Service (AKS) skonfigurowany z integracją serwera API z siecią VNet projektuje punkt końcowy serwera API bezpośrednio do delegowanej podsieci w sieci VNet, w której AKS jest wdrożony. Integracja sieci VNet z serwerem API umożliwia komunikację sieciową między serwerem API a węzłami klastra bez konieczności stosowania łącza prywatnego lub tunelu. Serwer interfejsu API jest dostępny za wewnętrznym adresem VIP modułu równoważenia obciążenia w delegowanej podsieci, z której węzły są skonfigurowane do korzystania. Korzystając z integracji API Server VNet, można zapewnić, że ruch sieciowy między serwerem API a pulami węzłów pozostaje tylko w sieci prywatnej.

Łączność z serwerem interfejsu API

Płaszczyzna sterowania lub serwer interfejsu API znajduje się w subskrypcji platformy Azure zarządzanej przez usługę AKS. Klaster lub pula węzłów znajduje się w subskrypcji platformy Azure. Serwer i maszyny wirtualne tworzące węzły klastra mogą komunikować się ze sobą za pośrednictwem adresu VIP serwera API i adresów IP zasobników, które są przypisane do delegowanej podsieci.

Integracja z siecią wirtualną serwera API jest obsługiwana w przypadku klastrów publicznych lub prywatnych. Dostęp publiczny można dodać lub usunąć po aprowizacji klastra. W przeciwieństwie do klastrów niezintegrowanych z siecią wirtualną, węzły agenta zawsze komunikują się bezpośrednio z prywatnym adresem IP wewnętrznego modułu równoważenia obciążenia (ILB) serwera API, nie używając systemu DNS. Cały ruch między węzłami a serwerem API odbywa się w sieci prywatnej i do połączenia serwera API z węzłem nie jest wymagany tunel. Klienci poza klastrem, którzy muszą komunikować się z serwerem interfejsu API, mogą to zrobić normalnie, jeśli jest włączony dostęp do sieci publicznej. Jeśli dostęp do sieci publicznej jest wyłączony, należy postępować zgodnie z tą samą prywatną metodologią konfiguracji DNS co standardowe klastry prywatne.

Wymagania wstępne

  • Musisz mieć zainstalowany interfejs wiersza polecenia platformy Azure w wersji 2.73.0 lub nowszej. Możesz sprawdzić swoją wersję przy użyciu az --version polecenia .

Ograniczenia

  • Integracja z siecią wirtualną serwera API nie obsługuje szyfrowania sieci wirtualnej. Klastry wdrożone na SKU węzłów AKS w wersji 3 lub starszej (które nie obsługują szyfrowania sieci VNet), są dozwolone, ale ruch nie będzie szyfrowany. Klastry wdrożone na SKU węzłów AKS w wersji 4 lub nowszej (które obsługują Szyfrowanie VNet) są blokowane, ponieważ zaszyfrowane sieci VNet są niezgodne z Integracją VNet z serwerem API. Zobacz obsługiwane jednostki SKU VM w AKS dla szczegółów.

Availability

  • Integracja z siecią wirtualną serwera API jest dostępna we wszystkich regionach chmury publicznej ogólnie dostępnej z wyjątkiem regionów eastus2 i qatarcentral. Nieustannie pracujemy nad włączeniem tej funkcji w tych regionach i zaktualizujemy tę stronę, gdy te regiony staną się dostępne.

Utwórz klaster AKS z integracją serwera API z siecią wirtualną przy użyciu zarządzanej sieci wirtualnej.

Możesz skonfigurować swoje klastry AKS z integracją serwera API z VNet w zarządzanej sieci VNet lub w trybie "użyj własnego VNet". Można je utworzyć jako klastry publiczne (z dostępem do serwera interfejsu API dostępnym za pośrednictwem publicznego adresu IP) lub klastrami prywatnymi (gdzie serwer interfejsu API jest dostępny tylko za pośrednictwem prywatnej łączności z siecią wirtualną). Można również przełączać się między stanem publicznym i prywatnym bez ponownego wdrażania klastra.

Tworzenie grupy zasobów

  • Utwórz grupę zasobów przy użyciu az group create polecenia .

    az group create --location westus2 --name <resource-group>
    

Wdrażanie klastra publicznego

  • Wdróż publiczny klaster AKS z integracją serwera Interfejsu API z siecią VNet dla zarządzanej sieci VNet, używając polecenia az aks create z flagą --enable-api-server-vnet-integration.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

Wdrażanie klastra prywatnego

  • Wdróż prywatny klaster AKS z integracją z siecią wirtualną serwera API dla zarządzanej sieci wirtualnej, używając polecenia az aks create z flagami --enable-api-server-vnet-integration i --enable-private-cluster.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

Tworzenie prywatnego klastra usługi AKS z integracją z siecią wirtualną usługi API Server przy użyciu własnej sieci wirtualnej

W przypadku korzystania z własnej sieci wirtualnej należy utworzyć i delegować podsieć serwera interfejsu API do Microsoft.ContainerService/managedClustersusługi , która przyznaje usłudze AKS uprawnienia do wstrzykiwania zasobników serwera interfejsu API i wewnętrznego modułu równoważenia obciążenia do tej podsieci. Nie można używać podsieci dla innych obciążeń, ale można jej używać w przypadku wielu klastrów usługi AKS znajdujących się w tej samej sieci wirtualnej. Minimalny obsługiwany rozmiar podsieci serwera interfejsu API to /28.

Tożsamość klastra musi mieć uprawnienia zarówno do podsieci serwera interfejsu API, jak i podsieci węzła. Brak uprawnień w podsieci serwera interfejsu API może spowodować niepowodzenie aprowizacji.

Ostrzeżenie

Klaster AKS rezerwuje co najmniej 9 adresów IP w przestrzeni podsieci. Brak adresów IP może uniemożliwić skalowanie serwera interfejsu API i spowodować awarię serwera interfejsu API.

Tworzenie grupy zasobów

az group create --location <location> --name <resource-group>

Tworzenie sieci wirtualnej

  1. Utwórz sieć wirtualną przy użyciu az network vnet create polecenia .

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --location <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Utwórz podsieć serwera API przy użyciu polecenia az network vnet subnet create.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. Utwórz podsieć klastra przy użyciu az network vnet subnet create polecenia .

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

Tworzenie tożsamości zarządzanej i nadawanie jej uprawnień w sieci wirtualnej

  1. Utwórz tożsamość zarządzaną przy użyciu az identity create polecenia .

    az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
    
  2. Przypisz rolę Współtwórca sieci do podsieci serwera API, używając polecenia az role assignment create.

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Przypisz rolę Dawcy uprawnień sieciowych do podsieci klastra za pomocą polecenia az role assignment create.

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

Wdrażanie klastra publicznego

  • Wdróż publiczny klaster AKS z integracją serwera API z siecią wirtualną, używając polecenia az aks create z flagą --enable-api-server-vnet-integration.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration \
        --vnet-subnet-id <cluster-subnet-resource-id> \
        --apiserver-subnet-id <apiserver-subnet-resource-id> \
        --assign-identity <managed-identity-resource-id> \
        --generate-ssh-keys
    

Wdrażanie klastra prywatnego

  • Użyj polecenia az aks create z flagami --enable-api-server-vnet-integration i --enable-private-cluster, aby wdrożyć prywatny klaster AKS z integracją serwera API z siecią wirtualną.

    az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys
    

Konwertowanie istniejącego klastra usługi AKS na integrację z siecią wirtualną serwera API

Ostrzeżenie

Integracja z siecią wirtualną serwera API to jednokierunkowa funkcja wrażliwa na pojemność.

  • Wymagane jest ręczne ponowne uruchomienie.
    Po włączeniu integracji z siecią wirtualną programu API Server przy użyciu programu az aks update --enable-apiserver-vnet-integrationnależy natychmiast ponownie uruchomić klaster, aby zmiany zaczęły obowiązywać. To ponowne uruchomienie nie jest zautomatyzowane. Opóźnienie ponownego uruchamiania zwiększa ryzyko niedostępności pojemności, co może uniemożliwić uruchamianie serwera interfejsu API.

  • Pojemność jest weryfikowana, ale nie jest zarezerwowana.
    Usługa AKS weryfikuje pojemność regionalną po włączeniu funkcji w istniejącym klastrze, ale ta walidacja nie rezerwuje pojemności. Jeśli ponowne uruchomienie zostanie opóźnione, a pojemność stanie się niedostępna w międzyczasie, uruchomienie klastra może zakończyć się niepowodzeniem po zatrzymaniu lub ponownym uruchomieniu. Klastry, które włączyły tę funkcję przed ogólną dostępnością lub które nie zostały jeszcze uruchomione ponownie od momentu włączenia, nie zostaną poddane walidacji pojemności.

  • Nie można wyłączyć funkcji.
    Po włączeniu, funkcja staje się trwała. Nie można wyłączyć integracji z siecią wirtualną serwera API.

To uaktualnienie przeprowadza uaktualnienie wersji obrazu węzłów we wszystkich pulach oraz ponownie uruchamia wszystkie obciążenia w trakcie ich stopniowego uaktualniania obrazu.

Ostrzeżenie

Przekonwertowanie klastra na integrację z siecią VNet serwera API powoduje zmianę jego adresu IP, choć nazwa hosta pozostaje taka sama. Jeśli adres IP serwera interfejsu API został skonfigurowany w dowolnych zaporach lub regułach sieciowej grupy zabezpieczeń, może być konieczne zaktualizowanie tych reguł.

  • Zaktualizuj klaster do integracji z siecią wirtualną usługi API Server przy użyciu az aks update polecenia z flagą --enable-apiserver-vnet-integration .

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>
    

Włączanie lub wyłączanie trybu klastra prywatnego w istniejącym klastrze za pomocą integracji z siecią wirtualną serwera API

Klastry usługi AKS skonfigurowane za pomocą integracji z siecią wirtualną serwera API mogą mieć włączony lub wyłączony tryb sieci publicznej/klastra prywatnego bez ponownego wdrażania klastra. Nazwa hosta serwera interfejsu API nie zmienia się, ale w razie potrzeby publiczne wpisy DNS są modyfikowane lub usuwane.

Uwaga

--disable-private-cluster jest obecnie w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz Poziomy odniesienia i wsparcia.

Włączanie trybu klastra prywatnego

  • Włącz tryb klastra prywatnego za pomocą polecenia az aks update z flagą --enable-private-cluster.

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-private-cluster
    

Wyłączanie trybu klastra prywatnego

  • Wyłącz tryb klastra prywatnego przy użyciu az aks update polecenia z flagą --disable-private-cluster .

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --disable-private-cluster
    

Nawiązywanie połączenia z klastrem przy użyciu narzędzia kubectl

  • Skonfiguruj kubectl , aby nawiązać połączenie z klastrem az aks get-credentials przy użyciu polecenia .

    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    

Punkt końcowy serwera API klastra prywatnego można udostępnić za pomocą integracji serwera API z siecią VNet przy użyciu usługi Azure Private Link. W poniższych krokach pokazano, jak utworzyć usługę Private Link (PLS) w sieci wirtualnej klastra i nawiązać z nią połączenie z inną siecią wirtualną lub subskrypcją przy użyciu prywatnego punktu końcowego.

Utwórz prywatny klaster z integracją VNet serwera API.

  • Utwórz prywatny klaster AKS z integracją serwera API z siecią wirtualną, używając polecenia az aks create z opcjami --enable-api-server-vnet-integration i --enable-private-cluster.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration
    

Aby uzyskać więcej wskazówek dotyczących konfigurowania usługi Private Link z integracją z siecią wirtualną serwera interfejsu API, zobacz Private Link with API Server VNet Integration (Integracja usługi Private Link z siecią wirtualną serwera interfejsu API).

Reguły grupy zabezpieczeń sieci

Cały ruch w sieci wirtualnej jest domyślnie dozwolony. Jeśli jednak dodano reguły NSG w celu ograniczenia ruchu między różnymi podsieciami, upewnij się, że reguły NSG zezwalają na następujące typy komunikacji:

Cel Źródło Protokół Port Użyj
Podsieć CIDR APIServer Podsieć klastra TCP 443 i 4443 Wymagane do umożliwienia komunikacji między węzłami systemu i serwerem API.
Podsieć CIDR APIServer Azure Load Balancer TCP 9988 Wymagane do włączenia komunikacji między usługą Azure Load Balancer i serwerem interfejsu API. Możesz również włączyć całą komunikację między usługą Azure Load Balancer a podsiecią CIDR serwera API.

Następne kroki