Konfigurowanie podsieci usługi Azure CNI — dynamiczna alokacja adresów IP i rozszerzona obsługa podsieci w usłudze Azure Kubernetes Service (AKS)

Wadą tradycyjnego interfejsu sieciowego CNI jest wyczerpanie adresów IP zasobników w miarę wzrostu klastra AKS, co skutkuje koniecznością przebudowy 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 oddzielonej od tej, która obsługuje klaster AKS.

Oferuje następujące korzyści:

  • Lepsze wykorzystanie adresów IP: adresy IP są dynamicznie przydzielane zasobnikom klastra z podsieci zasobników. Ta metoda prowadzi 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: możesz niezależnie skalować podsieci węzłów i podów. Pojedyncza podsieć dla podów może być współużytkowana w różnych pulach węzłów w ramach klastra lub w różnych klastrach AKS wdrożonych w tej samej sieci wirtualnej. Można również skonfigurować oddzielną podsieć podów dla puli węzłów.
  • Wysoka wydajność: ponieważ zasobniki mają przypisane adresy IP sieci wirtualnej, mają bezpośrednią łączność z innymi zasobnikami klastra i zasobami w sieci wirtualnej. Rozwiązanie obsługuje duże klastry w ramach skonfigurowanych limitów adresów IP sieci wirtualnej 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. Ta konfiguracja umożliwia 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 Azure NAT Gateway i używanie sieciowych grup zabezpieczeń do filtrowania ruchu między pulami węzłów.
  • Zasady sieciowe Kubernetes: W przypadku pul węzłów systemu Linux użyj Azure CNI opartego na Cilium. W przypadku pul węzłów Windows użyj Calico. obsługa programu Azure Network Policy Manager (NPM) kończy się 30 września 2026 r. dla węzłów Windows i 30 września 2028 r. dla węzłów systemu Linux. Nowe subskrypcje nie mogą już włączać Azure NPM. Aby uzyskać więcej informacji, zobacz Opcje zasad sieciowych w usłudze AKS.

W tym artykule pokazano, jak używać podsieci usługi Azure CNI z dynamicznym przydziałem adresów IP i rozszerzoną obsługą podsieci w usłudze AKS.

Prerequisites

  • 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.

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

  • Azure CLI w wersji 2.37.0 lub nowszej.

  • Jeśli nie używasz klastra izolowanego sieci, sieć wirtualna musi zezwalać na łączność wychodzącą z wymaganymi punktami końcowymi usługi AKS.

  • Jeśli używasz sieci wirtualnej, którą zarządzasz, tożsamość klastra musi mieć uprawnienia roli Network Contributor w podsieciach węzłów i podów. Nie można delegować podsieci węzła.

  • Jeśli masz istniejący klaster, musisz włączyć usługę Container Insights na potrzeby monitorowania użycia podsieci IP. Usługę az aks enable-addons Container Insights można włączyć przy użyciu polecenia , jak pokazano w poniższym przykładzie:

    RESOURCE_GROUP_NAME="<resource-group-name>"
    CLUSTER_NAME="<cluster-name>"
    
    az aks enable-addons --addons monitoring --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
    

Ograniczenia

planowanie adresowania IP

Planowanie adresowania IP jest znacznie prostsze dzięki tej funkcji. Ponieważ węzły i pod-y są rozszerzane niezależnie, ich przestrzenie adresowe mogą być również planowane oddzielnie. Ponieważ podsieci zasobników można skonfigurować na poziomie puli węzłów, zawsze można dodać nową podsieć, kiedy dodajesz pulę węzłów. Zasobniki systemowe w puli węzłów/klastrów również otrzymują adresy IP z podsieci zasobników, więc to zachowanie powinno być uwzględnione.

Przydzielasz adresy IP do węzłów w partiach po 16. Węzły żądają 16 adresów IP podczas uruchamiania i żądają kolejnej puli 16 adresów IP, gdy w przydzielonej im puli pozostaje mniej niż osiem nieprzydzielonych adresów IP. Przy określaniu rozmiaru podsieci zasobników należy uwzględnić maksymalną liczbę zasobników na węzeł, maksymalną liczbę węzłów, dodatkowe węzły na czas aktualizacji oraz przewidywane skalowanie. Uwzględnij również dodatkową rezerwę na czas opóźnienia między usunięciem zasobnika a zwolnieniem jego adresu IP. Aby uzyskać więcej informacji, zobacz Uaktualnianie i zagadnienia dotyczące skalowania.

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

Aby wyświetlić i zweryfikować zasoby NodeNetworkConfiguration (NNC) odpowiedzialne za te alokacje adresów IP, możesz uruchomić następujące polecenie:

kubectl get nodenetworkconfigs -n kube-system -o wide

Maksymalna liczba podów na węzeł w klastrze z podsiecią Podów — dynamiczna alokacja IP i rozszerzone wsparcie dla podsieci

Wartość zasobników na węzeł w przypadku korzystania z podsieci zasobników usługi Azure CNI — dynamiczna alokacja adresów IP różni się nieco od tradycyjnego zachowania CNI:

CNI Default Możliwość konfigurowania podczas wdrażania
Tradycyjny interfejs CNI platformy Azure 30 Tak (do 250)
Podsieć usługi Azure CNI — dynamiczna alokacja adresów IP 110 Tak (do 250)

Podczas tworzenia klastra lub dodawania puli węzłów można skonfigurować --max-pods do maksymalnej wartości 250 w usłudze AKS. Aby uzyskać informacje o minimalnych wartościach i innych wymaganiach, zobacz Maksymalna liczba zasobników na węzeł.

Parametry wdrożenia

Użyj --network-plugin azure, aby włączyć Azure CNI. Parametr --node-count ustawia początkową liczbę węzłów, a --max-pods ustawia maksymalną liczbę podów na każdym węźle. Następujące parametry podsieci różnią się od podstawowych Azure sieci CNI:

  • Parametr podsieci odnosi się do podsieci węzłów, która hostuje węzły klastra usługi AKS.
  • Użyj dodatkowego parametru pod subnet, aby określić podsieć, z której adresy IP są dynamicznie przydzielane zasobnikom.

Konfigurowanie dynamicznej alokacji adresów IP przy użyciu Azure CLI

Poniższe kroki tworzą sieć wirtualną z oddzielnymi podsieciami węzłów i podów, a następnie wdrażają klaster AKS przy użyciu Azure CNI Pod Subnet z dynamicznym przydzielaniem adresów IP. Przed uruchomieniem poleceń sprawdź, czy Azure CLI używa subskrypcji, w której chcesz utworzyć zasoby.

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 --vnet-subnet-id i podsieci zasobnika przy użyciu --pod-subnet-id, włączając dodatek do monitorowania.

CLUSTER_NAME="myAKSCluster"
SUBSCRIPTION=$(az account show --query id --output tsv)

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 \
    --generate-ssh-keys

Dodawanie puli węzłów

Podczas dodawania puli węzłów należy odwołać się do podsieci węzłów przy użyciu --vnet-subnet-id i do podsieci zasobnika przy użyciu --pod-subnet-id. Poniższy przykład tworzy dwie nowe podsieci, które są następnie używane do utworzenia 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. Użyj poniższej procedury, aby włączyć monitorowanie i wyświetlić zebrane metryki:

  1. Pobierz plik container-azm-ms-agentconfig.yaml z GitHub.

  2. W sekcji integrations znajdź azure_subnet_ip_usage i ustaw enabled na true. Ustawienie enabled = true w obszarze azure_subnet_ip_usage aktywuje monitorowanie użycia podsieci IP.

  3. Zapisz plik.

  4. Uruchom następujące polecenia, aby ustawić aktywną subskrypcję i pobrać poświadczenia klastra do lokalnego pliku kubeconfig:

    az account set --subscription $SUBSCRIPTION
    az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
    
  5. Otwórz terminal w folderze, w którym zapisano plik container-azm-ms-agentconfig.yaml.

  6. Zastosuj konfigurację przy użyciu kubectl apply-f container-azm-ms-agentconfig.yaml polecenia . To polecenie uruchamia ponownie zasobnik, a po upływie 5–10 minut można zobaczyć metryki.

  7. Wyświetl metryki w klastrze, przechodząc do obszaru Skoroszyty na stronie klastra w witrynie Azure Portal i znajdź skoroszyt o nazwie Użycie adresu IP podsieci.

Dynamiczna alokacja adresów IP — często zadawane pytania

Czy mogę przypisać wiele podsieci do klastra lub puli węzłów?

Do klastra można przypisać wiele podsieci zasobników, ale do każdej puli węzłów można przypisać tylko jedną podsieć zasobników. Wiele klastrów lub pul węzłów może współdzielić podsieć podów.

Czy mogę przypisać podsieci z innej sieci wirtualnej?

Nie, należy użyć podsieci zasobników z tej samej sieci wirtualnej co klaster.

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

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

Dalsze kroki

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