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

Kommentar

När du använder dynamisk allokering av IP-adresser stöds inte att exponera ett program som en Private Link-tjänst med en Kubernetes Load Balancer-tjänst.

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

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

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

  1. Ladda ned eller grep filen med namnet container-azm-ms-agentconfig.yaml från GitHub.

  2. Hitta azure_subnet_ip_usage i integreringar. Ställ in enabledtrue.

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

  1. Öppna terminalen i mappen som den nedladdade filen container-azm-ms-agentconfig.yaml sparas.

  2. Börja med att använda konfigurationen med kommandot : kubectl apply -f container-azm-ms-agentconfig.yaml

  3. Detta startar om podden och efter 5–10 minuter visas måtten.

  4. Om du vill visa måtten i klustret går du till Arbetsböcker på klustersidan i Azure-portalen och hittar arbetsboken med namnet "IP-användning för undernät". Vyn ser ut ungefär så här:

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

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: