Konfigurera Azure CNI-nätverk för dynamisk allokering av IP-adresser och förbättrat undernätsstöd i Azure Kubernetes Service (AKS)
En nackdel med det traditionella CNI är överbelastningen av podd-IP-adresser när AKS-klustret växer, vilket resulterar i behovet av att återskapa hela klustret i ett större undernät. Den nya funktionen för dynamisk IP-allokering i Azure CNI löser problemet genom att allokera podd-IP-adresser från ett undernät som är separat från undernätet som är värd för AKS-klustret.
Den erbjuder följande fördelar:
- Bättre IP-användning: IP-adresser allokeras dynamiskt till klusterpoddar från poddundernätet. Detta leder till bättre användning av IP-adresser i klustret jämfört med den traditionella CNI-lösningen, som utför statisk allokering av IP-adresser för varje nod.
- Skalbart och flexibelt: Nod- och poddundernät kan skalas separat. Ett enda poddundernät kan delas mellan flera nodpooler i ett kluster eller över flera AKS-kluster som distribueras i samma virtuella nätverk. Du kan också konfigurera ett separat poddundernät för en nodpool.
- Höga prestanda: Eftersom podden har tilldelats IP-adresser för virtuella nätverk har de direkt anslutning till andra klusterpoddar och resurser i det virtuella nätverket. Lösningen stöder mycket stora kluster utan försämrad prestanda.
- Separata VNet-principer för poddar: Eftersom poddar har ett separat undernät kan du konfigurera separata VNet-principer för dem som skiljer sig från nodprinciper. Detta möjliggör många användbara scenarier som att endast tillåta internetanslutning för poddar och inte för noder, åtgärda käll-IP för podden i en nodpool med hjälp av en Azure NAT Gateway och använda NSG:er för att filtrera trafik mellan nodpooler.
- Kubernetes-nätverksprinciper: Både Azure-nätverksprinciperna och Calico fungerar med den här nya lösningen.
Den här artikeln visar hur du använder Azure CNI-nätverk för dynamisk allokering av IP-adresser och förbättrat undernätsstöd i AKS.
Förutsättningar
Granska förutsättningarna för att konfigurera grundläggande Azure CNI-nätverk i AKS, eftersom samma förutsättningar gäller för den här artikeln.
Granska distributionsparametrarna för att konfigurera grundläggande Azure CNI-nätverk i AKS, eftersom samma parametrar gäller.
AKS Engine- och DIY-kluster stöds inte.
Azure CLI-version
2.37.0
eller senare.Om du har ett befintligt kluster måste du aktivera Container Insights för övervakning av IP-undernätsanvändning. Du kan aktivera Container Insights med hjälp av
az aks enable-addons
kommandot, som du ser i följande exempel:az aks enable-addons --addons monitoring --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
Planera IP-adress
Det är mycket enklare att planera DIN IP-adressering med den här funktionen. Eftersom noderna och poddarna skalas separat kan deras adressutrymmen också planeras separat. Eftersom poddundernät kan konfigureras till kornigheten för en nodpool kan du alltid lägga till ett nytt undernät när du lägger till en nodpool. Systempoddarna i en kluster-/nodpool tar också emot IP-adresser från poddundernätet, så det här beteendet måste redovisas.
IP-adresser allokeras till noder i batchar med 16. IP-allokering av poddundernät bör planeras med minst 16 IP-adresser per nod i klustret. noder begär 16 IP-adresser vid start och begär ytterligare en batch på 16 när det finns 8 IP-adresser som inte <allokerats i tilldelningen.
Planeringen av IP-adresser för Kubernetes-tjänster och Docker-bryggan förblir oförändrad.
Om du vill visa och verifiera de NNC-resurser (NodeNetworkConfiguration) som ansvarar för dessa IP-allokeringar kan du köra följande kommando:
kubectl get nodenetworkconfigs -n kube-system -o wide
Maximalt antal poddar per nod i ett kluster med dynamisk allokering av IP-adresser och utökat stöd för undernät
Poddarna per nodvärden när du använder Azure CNI med dynamisk allokering av IP-adresser skiljer sig något från det traditionella CNI-beteendet:
CNI | Standardvärde | Kan konfigureras vid distribution |
---|---|---|
Traditionell Azure CNI | 30 | Ja (upp till 250) |
Azure CNI med dynamisk allokering av IP-adresser | 250 | Ja (upp till 250) |
All annan vägledning som rör konfiguration av maximala poddar per nod förblir densamma.
Distributionsparametrar
Distributionsparametrarna för att konfigurera grundläggande Azure CNI-nätverk i AKS är alla giltiga, med två undantag:
- Undernätsparametern refererar nu till det undernät som är relaterat till klustrets noder.
- Ytterligare ett undernät för parameterpoddar används för att ange det undernät vars IP-adresser ska allokeras dynamiskt till poddar.
Konfigurera nätverk med dynamisk allokering av IP-adresser och utökat undernätsstöd – Azure CLI
Att använda dynamisk allokering av IP-adresser och utökat undernätsstöd i klustret liknar standardmetoden för att konfigurera ett Kluster-Azure CNI. I följande exempel går vi igenom hur du skapar ett nytt virtuellt nätverk med ett undernät för noder och ett undernät för poddar, och skapar ett kluster som använder Azure CNI med dynamisk allokering av IP-adresser och förbättrat undernätsstöd. Se till att ersätta variabler som $subscription
med dina egna värden.
Skapa det virtuella nätverket med två undernät.
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
Skapa klustret, referera till nodundernätet med och --vnet-subnet-id
poddundernätet med hjälp av --pod-subnet-id
och aktivera övervakningstillägget.
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
Lägga till nodpool
När du lägger till nodpoolen refererar du till nodundernätet med och --vnet-subnet-id
poddundernätet med .--pod-subnet-id
I följande exempel skapas två nya undernät som sedan refereras i skapandet av en ny nodpool:
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
Övervaka IP-undernätsanvändning
Azure CNI ger möjlighet att övervaka IP-undernätsanvändning. Följ stegen nedan för att aktivera övervakning av IP-undernätsanvändning:
Hämta YAML-filen
Ladda ned eller grep filen med namnet container-azm-ms-agentconfig.yaml från GitHub.
Hitta
azure_subnet_ip_usage
i integreringar. Ställ inenabled
påtrue
.Spara filen.
Hämta autentiseringsuppgifter för AKS
Ange variablerna för prenumeration, resursgrupp och kluster. Tänk på följande som exempel:
az account set --subscription $SUBSCRIPTION
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
Tillämpa konfigurationen
- Öppna terminalen i mappen där den nedladdade filen container-azm-ms-agentconfig.yaml sparas.
- Använd konfigurationen med kommandot
kubectl apply -f container-azm-ms-agentconfig.yaml
. Detta startar om podden och efter 5–10 minuter visas måtten. - Visa måtten i klustret genom att gå till Arbetsböcker på klustersidan i Azure Portal och leta reda på arbetsboken med namnet IP-användning för undernätet.
Dynamisk allokering av IP-adresser och utökat undernät stöder vanliga frågor och svar
Kan jag tilldela flera poddundernät till en kluster-/nodpool?
Endast ett undernät kan tilldelas till ett kluster eller en nodpool. Flera kluster eller nodpooler kan dock dela ett enda undernät.
Kan jag tilldela poddundernät från ett annat virtuellt nätverk helt och hållet?
Nej, poddundernätet ska komma från samma virtuella nätverk som klustret.
Kan vissa nodpooler i ett kluster använda det traditionella CNI medan andra använder den nya CNI:n?
Hela klustret bör bara använda en typ av CNI.
Nästa steg
Läs mer om nätverk i AKS i följande artiklar:
Azure Kubernetes Service