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
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ć 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: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.
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 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 \
--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 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
Pobierz lub grep plik o nazwie container-azm-ms-agentconfig.yaml z usługi GitHub.
Znajdź
azure_subnet_ip_usage
w integracji. Ustaw wartość opcjienabled
natrue
.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
- Otwórz terminal w folderze, w którym jest zapisywany pobrany plik container-azm-ms-agentconfig.yaml .
- Zastosuj konfigurację przy użyciu
kubectl apply -f container-azm-ms-agentconfig.yaml
polecenia . Spowoduje to ponowne uruchomienie zasobnika, a po upływie 5–10 minut metryki będą widoczne. - 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 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:
Azure Kubernetes Service