Konfigurowanie sieci wtyczki Azure CNI na potrzeby dynamicznej alokacji adresów IP i rozszerzonej obsługi podsieci w usłudze Azure Kubernetes Service (AKS)

Wadą tradycyjnego interfejsu CNI jest wyczerpanie adresów IP zasobników w miarę wzrostu klastra usługi AKS, co skutkuje koniecznością ponownego skompilowania całego klastra w większej podsieci. Nowa funkcja dynamicznej alokacji adresów IP w usłudze Azure CNI rozwiązuje ten problem, przydzielając adresy IP zasobników z podsieci niezależnie od podsieci hostujących klaster usługi AKS.

Oferuje następujące korzyści:

  • Lepsze wykorzystanie adresów IP: adresy IP są dynamicznie przydzielane do zasobników klastra z podsieci Zasobnika. Prowadzi to do lepszego wykorzystania adresów IP w klastrze w porównaniu z tradycyjnym rozwiązaniem CNI, które wykonuje statyczną alokację adresów IP dla każdego węzła.
  • Skalowalne i elastyczne: podsieci węzłów i zasobników można skalować niezależnie. Pojedyncza podsieć zasobnika może być współużytkowana w wielu pulach węzłów klastra lub w wielu klastrach usługi AKS wdrożonych w tej samej sieci wirtualnej. Można również skonfigurować oddzielną podsieć zasobnika dla puli węzłów.
  • Wysoka wydajność: ponieważ zasobnik ma przypisane adresy IP sieci wirtualnej, mają bezpośrednią łączność z innym zasobnikem klastra i zasobami w sieci wirtualnej. Rozwiązanie obsługuje bardzo duże klastry bez spadku wydajności.
  • Oddzielne zasady sieci wirtualnej dla zasobników: ponieważ zasobniki mają oddzielną podsieć, można skonfigurować oddzielne zasady sieci wirtualnej dla nich, które różnią się od zasad węzłów. Umożliwia to wiele przydatnych scenariuszy, takich jak zezwolenie na łączność z Internetem tylko dla zasobników, a nie dla węzłów, naprawianie źródłowego adresu IP zasobnika w puli węzłów przy użyciu bramy translatora adresów sieciowych platformy Azure oraz filtrowanie ruchu między pulami węzłów za pomocą sieciowych grup zabezpieczeń.
  • Zasady sieciowe platformy Kubernetes: zarówno zasady sieci platformy Azure, jak i Calico współpracują z tym nowym rozwiązaniem.

W tym artykule pokazano, jak używać sieci azure CNI do dynamicznej alokacji adresów IP i rozszerzonej obsługi podsieci w usłudze AKS.

Wymagania wstępne

Uwaga

W przypadku korzystania z dynamicznej alokacji adresów IP uwidacznianie aplikacji jako usługi Private Link przy użyciu usługi Kubernetes Load Balancer nie jest obsługiwane.

  • Zapoznaj się z wymaganiami wstępnymi dotyczącymi konfigurowania podstawowej sieci usługi Azure CNI w usłudze AKS, ponieważ te same wymagania wstępne dotyczą tego artykułu.

  • Zapoznaj się z parametrami wdrażania dotyczącymi konfigurowania podstawowej sieci usługi Azure CNI w usłudze AKS, co mają zastosowanie te same parametry.

  • Klastry AKS Engine i DIY nie są obsługiwane.

  • Wersja interfejsu wiersza polecenia platformy Azure lub nowsza 2.37.0 .

  • Jeśli masz istniejący klaster, musisz włączyć Szczegółowe informacje kontenera na potrzeby monitorowania użycia podsieci IP. Możesz włączyć Szczegółowe informacje Container przy użyciu az aks enable-addons polecenia , jak pokazano w poniższym przykładzie:

    az aks enable-addons --addons monitoring --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
    

planowanie adresowania IP

Planowanie adresowania IP jest znacznie prostsze dzięki tej funkcji. Ponieważ węzły i zasobniki są skalowane niezależnie, ich przestrzenie adresowe mogą być również planowane oddzielnie. Ponieważ podsieci zasobników można skonfigurować do stopnia szczegółowości puli węzłów, zawsze można dodać nową podsieć podczas dodawania puli węzłów. Zasobniki systemowe w puli klastrów/węzłów również otrzymują adresy IP z podsieci zasobnika, więc to zachowanie musi zostać uwzględnione.

Adresy IP są przydzielane do węzłów w partiach 16. Alokacja adresów IP podsieci powinna być planowana z co najmniej 16 adresami IP na węzeł w klastrze; węzły będą żądać 16 adresów IP podczas uruchamiania i zażąda innej partii 16 za każdym razem, gdy w ich przydziałie nie ma <8 adresów IP.

Planowanie adresów IP dla usług Kubernetes i mostka platformy Docker pozostaje niezmienione.

Maksymalna liczba zasobników na węzeł w klastrze z dynamiczną alokacją adresów IP i rozszerzoną obsługą podsieci

Wartości zasobników na węzeł w przypadku korzystania z usługi Azure CNI z dynamiczną alokacją adresów IP różnią się nieco od tradycyjnego zachowania CNI:

CNI Wartość domyślna Możliwość konfigurowania podczas wdrażania
Tradycyjny interfejs CNI platformy Azure 30 Tak (do 250)
Azure CNI z dynamiczną alokacją adresów IP 250 Tak (do 250)

Wszystkie inne wskazówki związane z konfigurowaniem maksymalnych zasobników na węzeł pozostają takie same.

Parametry wdrożenia

Parametry wdrażania do konfigurowania podstawowej sieci usługi Azure CNI w usłudze AKS są prawidłowe z dwoma wyjątkami:

  • Parametr podsieci odwołuje się teraz do podsieci powiązanej z węzłami klastra.
  • Dodatkowa podsieć zasobnika parametru służy do określania podsieci, której adresy IP będą dynamicznie przydzielane zasobnikom.

Konfigurowanie sieci przy użyciu dynamicznej alokacji adresów IP i rozszerzonej obsługi podsieci — interfejs wiersza polecenia platformy Azure

Użycie dynamicznej alokacji adresów IP i rozszerzonej obsługi podsieci w klastrze jest podobne do domyślnej metody konfigurowania klastra azure CNI. W poniższym przykładzie przedstawiono tworzenie nowej sieci wirtualnej z podsiecią dla węzłów i podsieci dla zasobników oraz tworzenie klastra korzystającego z sieci CNI platformy Azure z dynamiczną alokacją adresów IP i rozszerzoną obsługą podsieci. Pamiętaj, aby zastąpić zmienne, takie jak $subscription własnymi wartościami.

Utwórz sieć wirtualną z dwiema podsieciami.

RESOURCE_GROUP_NAME="myResourceGroup"
VNET_NAME="myVirtualNetwork"
LOCATION="westcentralus"
SUBNET_NAME_1="nodesubnet"
SUBNET_NAME_2="podsubnet"

# Create the resource group
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION

# Create our two subnet network 
az network vnet create --resource-group $RESOURCE_GROUP_NAME --location $LOCATION --name $VNET_NAME --address-prefixes 10.0.0.0/8 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_1 --address-prefixes 10.240.0.0/16 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_2 --address-prefixes 10.241.0.0/16 -o none 

Utwórz klaster, odwołując się do podsieci węzła przy użyciu polecenia --vnet-subnet-id i podsieci zasobnika oraz --pod-subnet-id włączając dodatek do monitorowania.

CLUSTER_NAME="myAKSCluster"
SUBSCRIPTION="aaaaaaa-aaaaa-aaaaaa-aaaa"

az aks create --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --location $LOCATION \
    --max-pods 250 \
    --node-count 2 \
    --network-plugin azure \
    --vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_1 \
    --pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_2 \
    --enable-addons monitoring

Dodawanie puli węzłów

Podczas dodawania puli węzłów należy odwołać się do podsieci węzłów przy użyciu polecenia i podsieci zasobnika przy użyciu --vnet-subnet-id polecenia --pod-subnet-id. Poniższy przykład tworzy dwie nowe podsieci, do których następnie odwołuje się utworzenie nowej puli węzłów:

SUBNET_NAME_3="node2subnet"
SUBNET_NAME_4="pod2subnet"
NODE_POOL_NAME="mynodepool"

az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_3 --address-prefixes 10.242.0.0/16 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_4 --address-prefixes 10.243.0.0/16 -o none 

az aks nodepool add --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --name $NODE_POOL_NAME \
    --max-pods 250 \
    --node-count 2 \
    --vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_3 \
    --pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_4 \
    --no-wait

Monitorowanie użycia podsieci IP

Usługa Azure CNI umożliwia monitorowanie użycia podsieci IP. Aby włączyć monitorowanie użycia podsieci IP, wykonaj poniższe kroki:

Pobieranie pliku YAML

  1. Pobierz lub grep plik o nazwie container-azm-ms-agentconfig.yaml z usługi GitHub.

  2. Znajdź azure_subnet_ip_usage w integracji. Ustaw wartość opcji enabled na true.

  3. Zapisz plik.

Uzyskiwanie poświadczeń usługi AKS

Ustaw zmienne dla subskrypcji, grupy zasobów i klastra. Rozważ następujące przykłady:

az account set --subscription $SUBSCRIPTION
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME

Stosowanie konfiguracji

  1. Otwórz terminal w folderze pobrany plik container-azm-ms-agentconfig.yaml .

  2. Najpierw zastosuj konfigurację przy użyciu polecenia : kubectl apply -f container-azm-ms-agentconfig.yaml

  3. Spowoduje to ponowne uruchomienie zasobnika, a po upływie 5–10 minut metryki będą widoczne.

  4. Aby wyświetlić metryki w klastrze, przejdź do pozycji Skoroszyty na stronie klastra w witrynie Azure Portal i znajdź skoroszyt o nazwie "Użycie adresu IP podsieci". Widok będzie wyglądać podobnie do następującego:

    A diagram of the Azure portal's workbook blade is shown, and metrics for an AKS cluster's subnet IP usage are displayed.

Dynamiczna alokacja adresów IP i rozszerzona obsługa podsieci — często zadawane pytania

  • Czy mogę przypisać wiele podsieci do puli klastrów/węzłów?

    Do klastra lub puli węzłów można przypisać tylko jedną podsieć. Jednak wiele klastrów lub pul węzłów może współużytkować jedną podsieć.

  • Czy można całkowicie przypisać podsieci z innej sieci wirtualnej?

    Nie, podsieć zasobnika powinna pochodzić z tej samej sieci wirtualnej co klaster.

  • Czy niektóre pule węzłów w klastrze mogą używać tradycyjnej sieci CNI, podczas gdy inne używają nowego interfejsu CNI?

    Cały klaster powinien używać tylko jednego typu CNI.

Następne kroki

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