Dela via


Konfigurera Azure CNI Pod-undernät – Dynamisk IP-allokering och utökat 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.
  • High performance: Since pods are assigned virtual network IPs, they have direct connectivity to other cluster pod and resources in the VNet. 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 Pod Subnet – Dynamisk IP-allokering och utökat undernätsstöd i AKS.

Prerequisites

  • Review the prerequisites for configuring basic Azure CNI networking in AKS, as the same prerequisites apply to this article.

  • Review the deployment parameters for configuring basic Azure CNI networking in AKS, as the same parameters apply.

  • 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
    

Planering av IP-adressering

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 poddundernät – Dynamisk IP-allokering och utökat stöd för undernät

Poddarna per nodvärde när du använder Azure CNI Pod Subnet – Dynamisk IP-allokering skiljer sig något från det traditionella CNI-beteendet:

CNI Default Kan konfigureras vid distribution
Traditionell Azure CNI 30 Ja (upp till 250)
Azure CNI Pod-undernät – Dynamisk IP-allokering 250 Ja (upp till 250)

All annan vägledning som rör konfiguration av maximala poddar per nod förblir densamma.

Deployment parameters

The deployment parametersfor configuring basic Azure CNI networking in AKS are all valid, with two exceptions:

  • The subnet parameter now refers to the subnet related to the cluster's nodes.
  • An additional parameter pod subnet is used to specify the subnet whose IP addresses will be dynamically allocated to pods.

Konfigurera poddundernät – Dynamisk IP-allokering och förbättrat stöd för undernät – Azure CLI

Användning av poddundernät – Dynamisk IP-allokering och utökat stöd för undernät i klustret liknar standardmetoden för att konfigurera ett kluster i 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 Pod Subnet – Dynamisk IP-allokering och utökat 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

  1. Download or grep the file named container-azm-ms-agentconfig.yaml from GitHub.

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

  3. Spara filen.

Hämta AKS-autentiseringsuppgifterna

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. Open the terminal in the folder in which the downloaded container-azm-ms-agentconfig.yaml file is saved.
  2. 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.
  3. Visa måtten i klustret genom att gå till Arbetsböcker på klustersidan i Azure-portalen och leta reda på arbetsboken med namnet IP-användning för undernätet.

Azure CNI Pod-undernät – Dynamisk IP-allokering 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?

    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.

Next steps

Läs mer om nätverk i AKS i följande artiklar: