Omówienie sieci usługi Azure CNI w usłudze Azure Kubernetes Service (AKS)

Domyślnie klastry usługi AKS używają rozwiązania kubenet i tworzą sieć wirtualną i podsieć. Dzięki rozwiązaniu kubenet węzły uzyskują adres IP z podsieci sieci wirtualnej. Translacja adresów sieciowych (NAT) jest następnie konfigurowana w węzłach, a zasobniki otrzymują adres IP "ukryty" za adresem IP węzła. Takie podejście zmniejsza liczbę adresów IP, które należy zarezerwować w przestrzeni sieciowej, aby zasobniki były używane.

Za pomocą interfejsu sieci kontenera platformy Azure (CNI) każdy zasobnik pobiera adres IP z podsieci i może być dostępny bezpośrednio. Systemy znajdujące się w tej samej sieci wirtualnej co klaster usługi AKS widzą adres IP zasobnika jako adres źródłowy dla każdego ruchu z zasobnika. Systemy spoza sieci wirtualnej klastra usługi AKS widzą adres IP węzła jako adres źródłowy dla dowolnego ruchu z zasobnika. Te adresy IP muszą być unikatowe w przestrzeni sieciowej i muszą być planowane z wyprzedzeniem. Każdy węzeł ma parametr konfiguracji dla maksymalnej liczby zasobników, które obsługuje. Równoważna liczba adresów IP na węzeł jest następnie zarezerwowana z góry dla tego węzła. Takie podejście wymaga większego planowania i często prowadzi do wyczerpania adresów IP lub konieczności ponownego kompilowania klastrów w większej podsieci w miarę wzrostu zapotrzebowania aplikacji.

Uwaga

W tym artykule wprowadzono tylko tradycyjne interfejsy CNI platformy Azure. W przypadku nakładki usługi Azure CNI sieć wirtualna azure CNI na potrzeby dynamicznej alokacji adresów IP i sieci wirtualnej usługi Azure CNI — statyczna alokacja bloków (wersja zapoznawcza). Zamiast tego zapoznaj się z dokumentacją.

Wymagania wstępne

  • Sieć wirtualna klastra usługi AKS musi zezwalać na wychodzącą łączność z Internetem.

  • Klastry usługi AKS nie mogą używać 169.254.0.0/16zakresu 172.31.0.0/16172.30.0.0/16192.0.2.0/24 adresów usługi Kubernetes, zakresu adresów zasobnika ani zakresu adresów sieci wirtualnej klastra.

  • Tożsamość klastra używana przez klaster usługi AKS musi mieć co najmniej uprawnienia Współautor sieci w podsieci w sieci wirtualnej. Jeśli chcesz zdefiniować rolę niestandardową zamiast korzystać z wbudowanej roli Współautor sieci, wymagane są następujące uprawnienia:

    • Microsoft.Network/virtualNetworks/subnets/join/action

    • Microsoft.Network/virtualNetworks/subnets/read

    • Microsoft.Authorization/roleAssignments/write

  • Podsieć przypisana do puli węzłów usługi AKS nie może być podsiecią delegowana.

  • Usługa AKS nie stosuje sieciowych grup zabezpieczeń do podsieci i nie modyfikuje żadnej sieciowej grupy zabezpieczeń skojarzonej z tą podsiecią. Jeśli podasz własną podsieć i dodasz sieciowe grupy zabezpieczeń skojarzone z tą podsiecią, musisz upewnić się, że reguły zabezpieczeń w sieciowych grupach zabezpieczeń zezwalają na ruch w zakresie CIDR węzła. Aby uzyskać więcej informacji, zobacz Sieciowe grupy zabezpieczeń.

Planowanie adresowania IP dla klastra

Klastry skonfigurowane za pomocą sieci azure CNI wymagają dodatkowego planowania. Rozmiar sieci wirtualnej i jej podsieci muszą być zgodne z liczbą zasobników, które planujesz uruchomić, oraz liczbę węzłów dla klastra.

Adresy IP zasobników i węzłów klastra są przypisywane z określonej podsieci w sieci wirtualnej. Każdy węzeł jest skonfigurowany przy użyciu podstawowego adresu IP. Usługa Azure CNI domyślnie konfiguruje domyślnie 30 dodatkowych adresów IP. Te adresy IP są przypisywane do zasobników zaplanowanych w węźle. W przypadku przeskalowania klastra w poziomie każdy węzeł będzie podobnie skonfigurowany przy użyciu adresów IP z podsieci. Można również wyświetlić maksymalne zasobniki na węzeł.

Ważne

Wymagana liczba adresów IP powinna obejmować zagadnienia dotyczące operacji uaktualniania i skalowania. Jeśli ustawisz zakres adresów IP tak, aby obsługiwał tylko stałą liczbę węzłów, nie można uaktualnić ani skalować klastra.

  • Podczas uaktualniania klastra usługi AKS nowy węzeł jest wdrażany w klastrze. Usługi i obciążenia zaczynają działać w nowym węźle, a starszy węzeł zostanie usunięty z klastra. Ten proces uaktualniania stopniowego wymaga udostępnienia co najmniej jednego dodatkowego bloku adresów IP. Liczba węzłów to .n + 1

    • Ta kwestia jest szczególnie ważna w przypadku korzystania z pul węzłów systemu Windows Server. Węzły systemu Windows Server w usłudze AKS nie stosują automatycznie Aktualizacje systemu Windows. Zamiast tego należy przeprowadzić uaktualnienie w puli węzłów. To uaktualnienie wdraża nowe węzły z najnowszym obrazem węzła podstawowego systemu Windows Server 2019 i poprawkami zabezpieczeń. Aby uzyskać więcej informacji na temat uaktualniania puli węzłów systemu Windows Server, zobacz Uaktualnianie puli węzłów w usłudze AKS.
  • Podczas skalowania klastra usługi AKS nowy węzeł jest wdrażany w klastrze. Usługi i obciążenia zaczynają działać w nowym węźle. Zakres adresów IP musi wziąć pod uwagę sposób skalowania w górę liczby węzłów i zasobników, które może obsługiwać klaster. Należy również uwzględnić jeden dodatkowy węzeł dla operacji uaktualniania. Liczba węzłów to .n + number-of-additional-scaled-nodes-you-anticipate + 1

Jeśli oczekujesz, że węzły będą uruchamiać maksymalną liczbę zasobników i regularnie niszczyć i wdrażać zasobniki, należy również uwzględnić dodatkowe adresy IP na węzeł. Kilka sekund może być wymagane, aby usunąć usługę i zwolnić jej adres IP, aby można było wdrożyć nową usługę i uzyskać adres. Te dodatkowe adresy IP uwzględniają tę możliwość.

Plan adresów IP klastra usługi AKS składa się z sieci wirtualnej, co najmniej jednej podsieci dla węzłów i zasobników oraz zakresu adresów usługi Kubernetes.

Zakres adresów/zasób platformy Azure Limity i rozmiar
Sieć wirtualna Sieć wirtualna platformy Azure może być tak duża jak /8, ale jest ograniczona do 65 536 skonfigurowanych adresów IP. Przed skonfigurowaniem przestrzeni adresowej należy wziąć pod uwagę wszystkie potrzeby sieciowe, w tym komunikację z usługami w innych sieciach wirtualnych. Jeśli na przykład skonfigurujesz zbyt dużą przestrzeń adresową, mogą wystąpić problemy z nakładaniem się innych przestrzeni adresowych w sieci.
Podsieć Musi być wystarczająco duża, aby pomieścić węzły, zasobniki i wszystkie zasoby platformy Kubernetes i platformy Azure, które mogą być aprowidowane w klastrze. Jeśli na przykład wdrożysz wewnętrzną usługę Azure Load Balancer, adresy IP frontonu zostaną przydzielone z podsieci klastra, a nie z publicznych adresów IP. Rozmiar podsieci powinien również uwzględniać operacje uaktualniania oraz przyszłe potrzeby dotyczące skalowania.

Użyj następującego równania, aby obliczyć minimalny rozmiar podsieci, w tym dodatkowy węzeł na potrzeby operacji uaktualniania: Przykład dla klastra 50 węzłów:

(51) + (51 * 30 (default)) = 1,581(number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure)(/21 lub większy)

Przykład dla klastra z 50 węzłami, który obejmuje również przygotowanie do skalowania w górę dodatkowych 10 węzłów: (61) + (61 * 30 (default)) = 1,891 (/21 lub większy)

Jeśli nie określisz maksymalnej liczby zasobników na węzeł podczas tworzenia klastra, maksymalna liczba zasobników na węzeł zostanie ustawiona na 30. Minimalna wymagana liczba adresów IP jest oparta na tej wartości. Jeśli obliczysz minimalne wymagania dotyczące adresów IP dla innej maksymalnej wartości, zobacz Maksymalna liczba zasobników na węzeł , aby ustawić tę wartość podczas wdrażania klastra.

Zakres adresów usługi Kubernetes Żaden element sieci w tej sieci wirtualnej lub połączony z tą siecią wirtualną nie może używać tego zakresu. Adres usługi CIDR musi być mniejszy niż /12. Możesz ponownie użyć tego zakresu w różnych klastrach usługi AKS.
Adres IP usługi DNS platformy Kubernetes Adres IP w zakresie adresów usługi Kubernetes używany przez odnajdywanie usługi klastra. Nie używaj pierwszego adresu IP w zakresie adresów. Pierwszy adres w zakresie podsieci jest używany dla adresu kubernetes.default.svc.cluster.local .

Maksymalna liczba zasobników na węzeł

Maksymalna liczba zasobników na węzeł w klastrze usługi AKS wynosi 250. Domyślna maksymalna liczba zasobników na węzeł różni się między sieciami kubenet i Azure CNI oraz metodą wdrażania klastra.

Metoda wdrażania Domyślna wartość platformy Kubenet Domyślna usługa Azure CNI Możliwość konfigurowania podczas wdrażania
Interfejs wiersza polecenia platformy Azure 110 30 Tak (do 250)
Szablon usługi Resource Manager 110 30 Tak (do 250)
Portal 110 110 (z możliwością konfiguracji na karcie Pule węzłów) Tak (do 250)

Konfigurowanie maksymalnych zasobników na węzeł dla nowych klastrów

Maksymalną liczbę zasobników na węzeł można skonfigurować w czasie wdrażania klastra lub podczas dodawania nowych pul węzłów. Maksymalną wartość zasobników na węzeł można ustawić na 250.

Jeśli podczas tworzenia nowych pul węzłów nie określisz wartości maxPods , zostanie wyświetlona wartość domyślna 30 dla usługi Azure CNI.

Minimalna wartość maksymalnej liczby zasobników na węzeł jest wymuszana w celu zagwarantowania miejsca dla zasobników systemowych o krytycznym znaczeniu dla kondycji klastra. Minimalna wartość, którą można ustawić dla maksymalnych zasobników na węzeł, wynosi 10, jeśli i tylko wtedy, gdy konfiguracja każdej puli węzłów ma miejsce dla co najmniej 30 zasobników. Na przykład ustawienie maksymalnej liczby zasobników na węzeł na co najmniej 10 wymaga, aby każda pula węzłów miała co najmniej trzy węzły. To wymaganie dotyczy również każdej nowo utworzonej puli węzłów, więc jeśli 10 jest zdefiniowanych jako maksymalne zasobniki na węzeł, każda kolejna dodana pula węzłów musi mieć co najmniej trzy węzły.

Sieć Minimum Maksimum
Azure CNI 10 250
Kubenet 10 250

Uwaga

Minimalna wartość w poprzedniej tabeli jest ściśle wymuszana przez usługę AKS. Nie można ustawić wartości dla maxPods , która jest niższa niż pokazana minimalna, ponieważ może to uniemożliwić uruchamianie klastra.

  • Interfejs wiersza polecenia platformy Azure: określ --max-pods argument podczas wdrażania klastra za pomocą polecenia az aks create . Maksymalna wartość to 250.
  • Szablon usługi Resource Manager: określ maxPods właściwość w obiekcie ManagedClusterAgentPoolProfile podczas wdrażania klastra przy użyciu szablonu usługi Resource Manager. Maksymalna wartość to 250.
  • Witryna Azure Portal: zmień Max pods per node pole w ustawieniach puli węzłów podczas tworzenia klastra lub dodawania nowej puli węzłów.

Konfigurowanie maksymalnych zasobników na węzeł dla istniejących klastrów

Ustawienie maxPods na węzeł można zdefiniować podczas tworzenia nowej puli węzłów. Jeśli chcesz zwiększyć ustawienie maxPods w istniejącym klastrze, dodaj nową pulę węzłów z nową liczbą żądanych dysków maxPods . Po przeprowadzeniu migracji zasobników do nowej puli usuń starszą pulę. Aby usunąć starszą pulę w klastrze, upewnij się, że tryby puli węzłów są ustawiane zgodnie z definicją w dokumencie pule węzłów systemowych.

Parametry wdrożenia

Podczas tworzenia klastra usługi AKS można skonfigurować następujące parametry dla sieci usługi Azure CNI:

Sieć wirtualna: sieć wirtualna, w której chcesz wdrożyć klaster Kubernetes. Jeśli chcesz utworzyć nową sieć wirtualną dla klastra, wybierz pozycję Utwórz nową i wykonaj kroki opisane w sekcji Tworzenie sieci wirtualnej. Jeśli chcesz wybrać istniejącą sieć wirtualną, upewnij się, że znajduje się ona w tej samej lokalizacji i subskrypcji platformy Azure co klaster Kubernetes. Aby uzyskać informacje o limitach i limitach przydziałów dla sieci wirtualnej platformy Azure, zobacz Limity subskrypcji i usług platformy Azure, limity przydziału i ograniczenia.

Podsieć: podsieć w sieci wirtualnej, w której chcesz wdrożyć klaster. Jeśli chcesz utworzyć nową podsieć w sieci wirtualnej dla klastra, wybierz pozycję Utwórz nową i wykonaj kroki opisane w sekcji Tworzenie podsieci . W przypadku łączności hybrydowej zakres adresów nie powinien pokrywać się z innymi sieciami wirtualnymi w danym środowisku.

Wtyczka sieci platformy Azure: jeśli jest używana wtyczka sieci platformy Azure, wewnętrzna usługa LoadBalancer z parametrem "externalTrafficPolicy=Local" nie może być dostępna z maszyn wirtualnych z adresem IP w klastrze CLUSTERCIDR, który nie należy do klastra usługi AKS.

Zakres adresów usługi Kubernetes: ten parametr jest zestawem wirtualnych adresów IP przypisywanych przez platformę Kubernetes do usług wewnętrznych w klastrze. Nie można zaktualizować tego zakresu po utworzeniu klastra. Możesz użyć dowolnego zakresu prywatnych adresów, który spełnia następujące wymagania:

  • Nie może należeć do zakresu adresów IP sieci wirtualnej klastra
  • Nie może nakładać się na inne sieci wirtualne, z którymi klastra wirtualne sieci równorzędne
  • Nie może nakładać się na żadne lokalne adresy IP
  • Nie może należeć do zakresów 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16lub 192.0.2.0/24

Chociaż technicznie można określić zakres adresów usługi w tej samej sieci wirtualnej co klaster, nie jest to zalecane. Nieprzewidywalne zachowanie może spowodować zastosowanie nakładających się zakresów adresów IP. Aby uzyskać więcej informacji, zobacz sekcję często zadawanych pytań w tym artykule. Aby uzyskać więcej informacji na temat usług Kubernetes, zobacz Usługi w dokumentacji platformy Kubernetes.

Adres IP usługi DNS kubernetes: adres IP usługi DNS klastra. Ten adres musi znajdować się w zakresie adresów usługi Kubernetes. Nie używaj pierwszego adresu IP w zakresie adresów. Pierwszy adres w zakresie podsieci jest używany dla adresu kubernetes.default.svc.cluster.local .

Często zadawane pytania

  • Czy mogę wdrożyć maszyny wirtualne w podsieci klastra?

    Tak. Jednak w przypadku sieci CNI platformy Azure na potrzeby dynamicznej alokacji adresów IP nie można wdrożyć maszyn wirtualnych w podsieci zasobnika.

  • Jaki źródłowy adres IP widzi systemy zewnętrzne dla ruchu pochodzącego z zasobnika z obsługą sieci CNI platformy Azure?

    Systemy znajdujące się w tej samej sieci wirtualnej co klaster usługi AKS widzą adres IP zasobnika jako adres źródłowy dla każdego ruchu z zasobnika. Systemy spoza sieci wirtualnej klastra usługi AKS widzą adres IP węzła jako adres źródłowy dla dowolnego ruchu z zasobnika.

    Jednak w przypadku dynamicznej alokacji adresów IP w usłudze Azure CNI, niezależnie od tego, czy połączenie znajduje się w tej samej sieci wirtualnej, czy między sieciami wirtualnymi, adres IP zasobnika jest zawsze adresem źródłowym dla dowolnego ruchu z zasobnika. Dzieje się tak, ponieważ sieć CNI platformy Azure na potrzeby dynamicznej alokacji adresów IP implementuje infrastrukturę sieci kontenerów platformy Microsoft Azure, która zapewnia kompleksowe środowisko pracy. W związku z tym eliminuje użycie usługi ip-masq-agent, która jest nadal używana przez tradycyjną usługę Azure CNI.

  • Czy mogę skonfigurować zasady sieci dla zasobnika?

    Tak, zasady sieciowe platformy Kubernetes są dostępne w usłudze AKS. Aby rozpocząć, zobacz Zabezpieczanie ruchu między zasobnikami przy użyciu zasad sieciowych w usłudze AKS.

  • Czy maksymalna liczba zasobników można wdrożyć w węźle konfigurowalnym?

    Tak, podczas wdrażania klastra przy użyciu interfejsu wiersza polecenia platformy Azure lub szablonu usługi Resource Manager. Zobacz Maksymalna liczba zasobników na węzeł.

    Nie można zmienić maksymalnej liczby zasobników na węzeł w istniejącym klastrze.

  • Jak mogę skonfigurować dodatkowe właściwości podsieci utworzonej podczas tworzenia klastra usługi AKS? Na przykład punkty końcowe usługi.

    Pełną listę właściwości sieci wirtualnej i podsieci tworzonych podczas tworzenia klastra usługi AKS można skonfigurować na stronie standardowej konfiguracji sieci wirtualnej w witrynie Azure Portal.

  • Czy mogę użyć innej podsieci w sieci wirtualnej klastra dla zakresu adresów usługi Kubernetes?

    Nie jest to zalecane, ale ta konfiguracja jest możliwa. Zakres adresów usługi to zestaw wirtualnych adresów IP (VIP), który platforma Kubernetes przypisuje do usług wewnętrznych w klastrze. Usługa Azure Networking nie ma wglądu w zakres adresów IP usługi klastra Kubernetes. Brak wglądu w zakres adresów usługi klastra może prowadzić do problemów. Później można utworzyć nową podsieć w sieci wirtualnej klastra, która nakłada się na zakres adresów usługi. Jeśli wystąpi takie nakładanie, platforma Kubernetes może przypisać usłudze adres IP, który jest już używany przez inny zasób w podsieci, powodując nieprzewidywalne zachowanie lub błędy. Zapewniając użycie zakresu adresów poza siecią wirtualną klastra, można uniknąć tego ryzyka nakładania się.

Następny krok

Dowiedz się więcej o sieci w usłudze AKS w następujących artykułach: