Använda nodpooler för virtuella datorer i Azure Kubernetes Service (AKS)

I den här artikeln får du lära dig mer om den nya nodpooltypen virtual machines för AKS.

Med nodpooler för virtuella datorer hanterar AKS direkt etablering och start av varje enskild nod. För nodpooler för vm-skalningsuppsättningar hanterar AKS modellen för vm-skalningsuppsättningar och använder den för att uppnå konsekvens mellan alla noder i nodpoolen. Med nodpooler för virtuella datorer kan du orkestrera klustret med virtuella datorer som passar dina enskilda arbetsbelastningar bäst.

Med hjälp av nodpooler för virtuella datorer hanterar AKS direkt etablering och bootstrapping för varje enskild nod. För nodpooler för vm-skalningsuppsättningar hanterar AKS modellen för vm-skalningsuppsättningar och använder den för att uppnå konsekvens mellan alla noder i nodpoolen. Med nodpooler för virtuella datorer kan du orkestrera klustret med virtuella datorer som passar dina enskilda arbetsbelastningar bäst.

Översikt över nodpoolen för virtuella datorer

Så här fungerar det

En nodpool består av en uppsättning virtuella datorer där olika storlekar på virtuella datorer stöder olika typer av arbetsbelastningar. Dessa storlekar på virtuella datorer, som kallas SKU:er, kategoriseras i olika familjer som är optimerade för specifika ändamål. Mer information finns i dokumentationen om VM-SKU:er. Med hjälp av nodpooler för virtuella datorer kan du utföra manuell skalning med flera SKU:er och automatisk skalning med flera SKU:er.

För att aktivera skalning av flera storlekar på virtuella datorer använder nodpooltypen Virtuella datorer en ScaleProfile som innehåller konfigurationer som anger hur nodpoolen kan skalas, särskilt den önskade listan över storleken på virtuella datorer och antalet för varje storlek. A ManualScaleProfile är en skalningsprofil som anger en önskad storlek på den virtuella datorn och det totala antalet av den typen i nodpoolen. Endast en virtuell datorstorlek tillåts i en ManualScaleProfile. Du måste skapa en separat ManualScaleProfile för varje virtuell datorstorlek i nodpoolen. När du skapar en ny nodpool för virtuella maskiner lägger du till en inledande manuell skalningsprofil för en virtuell maskinstorlek, med hjälp av vm-size-fältet och som inkluderar en node-count. Du kan också lägga till fler manuella skalningsprofiler genom att följa anvisningarna för att lägga till manuella skalningsprofiler.

För att aktivera skalning av flera storlekar på virtuella datorer använder nodpoolstypen för virtuella datorer en ScaleProfile som innehåller konfigurationer som anger hur nodpoolen kan skalas, särskilt den önskade listan över storleken på virtuella datorer och antalet för varje storlek. A ManualScaleProfile är en skalningsprofil som anger en önskad storlek på den virtuella datorn och det totala antalet av den typen i nodpoolen. A ManualScaleProfile stöder endast en virtuell datorstorlek. Du måste skapa en separat ManualScaleProfile för varje virtuell datorstorlek i nodpoolen. När du skapar en ny nodpool för virtuella datorer lägger du till en inledande manuell skalningsprofil för en virtuell datorstorlek med hjälp av fältet vm-size och inkluderar en node-count. Du kan också lägga till fler manuella skalningsprofiler genom att följa anvisningarna för att lägga till manuella skalningsprofiler.

Nodpooler för virtuella datorer stöder också Auto-läge, vilket innebär att nodpoolen kan använda cluster autoscaler. En nodpool för virtuella datorer stöder upp till fem skalningsprofiler totalt över manuella lägen och autoskalningslägen. Varje profil anger en SKU för en virtuell dator med samma familj. Varje AutoScaleProfile kan ha ett eget minsta och högsta antal noder i nodpoolen.

Anmärkning

När du skapar en ny Virtual Machines nodpool kan du ha flera skalningsprofiler och du behöver minst en manuell eller automatisk skalningsprofil i nodpoolen.

Fördelar med nodpooler för virtuella datorer

Fördelarna med nodpooltypen Virtual Machines är:

  • Flexibilitet: Nodspecifikationer kan uppdateras för att anpassas efter din aktuella arbetsbelastning och dina behov.
  • Finjusterad kontroll: Med kontroller på enskild nodnivå kan du ange och blanda noder i olika specifikationer för att lyfta begränsningar från en enda modell och förbättra konsekvensen.
  • Effektivitet: Du kan minska nodens fotavtryck för klustret, vilket förenklar dina driftskrav.

Nodpooler för virtuella datorer stöder upp till fem skalningsprofiler per nodpool, så arbetsbelastningar kan använda flera vm-SKU:er i samma familj utan att kräva en separat nodpool för varje SKU.

Jämför AKS-upplevelser av beräkningsskalning

I följande tabell visas hur nodpooler för virtuella datorer jämförs med standardnodpooler för skalningsuppsättningar .

Typ av nodpool Skalnings- och nodhanteringsfunktioner
Nodpool för virtuella datorer Du kan lägga till, ta bort eller uppdatera noder i en nodpool. Typer av virtuella datorer kan vara valfri virtuell dator av samma familjetyp (till exempel D-serien, A-serien och så vidare). Virtual Machines nodpooler möjliggör även manuell och automatisk skalning i fleraversioner.
Virtuell Maskinskalningsuppsättnings-baserad nodpool Du kan addera eller ta bort noder av samma storlek och typ i en nodpool. Om du lägger till en ny storlek på den virtuella datorn i klustret måste du skapa en ny nodpool.

Vilken beräkningsskalningsupplevelse ska jag välja på AKS?

Beroende på dina arbetsbelastningsbehov finns det flera beräkningsskalningsupplevelser att tänka på. Se användningsfallen för var och en:

  • Automatisk nodetablering: bäst för automatisk skalning för flera versioner och intelligentare och flexiblare val av VM-versioner (inklusive flera versionsfamiljer).
  • Virtual Machines nodpooler: bäst för manuell skalning i multiversion och stöder automatisk skalning i multiversion. Kräver specifika versionsval med upp till fem storlekar per nodpool.
  • Virtual Machine Scale Sets: stöder manuell skalning med en enskild version och automatisk skalning med en enskild version. Kräver specifika versionsval av en storlek per nodpool.

begränsningar för Virtual Machines nodpool

  • VM-storlekar som anges i poolen måste vara av samma typ. Till exempel kan virtuella GPU- och icke-GPU- eller x86- och ARM64-datorer inte finnas i samma nodpool.
  • InifiniBand är inte tillgängligt.
  • Nodpoolsögonblicksbild stöds inte.
  • Alla vm-storlekar som valts i en nodpool måste komma från en liknande virtuell datorfamilj. Du kan till exempel inte blanda en virtuell datortyp i N-serien med en virtuell datortyp i D-serien i samma nodpool.
  • Du måste välja alla VM-storlekar i en nodpool som stöder samma tillfälliga os-diskplacering när du använder tillfälliga OS-diskar. Eftersom DiffDiskPlacement är ett enda värde på poolnivå kan AKS inte uttrycka olika placeringar per VM-storlek i en nodpool.
  • Virtual Machines nodpooler tillåter upp till fem skalningsprofiler totalt per nodpool. Varje manuell profil eller autoskalningsprofil anger en VM-storlek från samma VM-familj.
  • Windows nodpooler stöds inte.
  • Tillgänglighetszoner stöds inte. Om din arbetsbelastning kräver zontålighet ska du använda nodpooler för Virtual Machine Scale Sets.

Kompatibilitet för placering av tillfällig OS-disk

När du lägger till en skalningsprofil som blandar VM-storlekar med olika placeringar för tillfällig OS-disk misslyckas åtgärden för att skapa eller uppdatera med felet InvalidParameter och underkoden EphemeralOSMixedPlacementNotSupported.

Använd något av följande reparationsalternativ:

  • Använd VM-storlekar som delar samma tillfälliga os-diskplacering.
  • Dela upp VM-storlekar i separata nodpooler så att varje pool har en placering.
  • Använd hanterade OS-diskar i stället för tillfälliga OS-diskar.

Fastställ placering innan du lägger till en skalningsprofil

Innan du lägger till en VM-storlek i en Virtual Machines nodpool kontrollerar du SKU-funktionerna i målregionen och kontrollerar kompatibiliteten för tillfälliga OS-diskplaceringar.

  1. Visa en lista över kandidat-VM-storlekar och granska viktiga funktioner:

    az vm list-skus \
        --location <region> \
        --size Standard_D \
        --resource-type virtualMachines \
        --query "[].{name:name, capabilities:capabilities[?name=='EphemeralOSDiskSupported' || name=='MaxResourceVolumeMB' || name=='NvmeDiskSizeInMiB']}" \
        --output json
    
  2. Bekräfta att varje vald VM-storlek stöder tillfälliga OS-diskar (EphemeralOSDiskSupported) och identifiera var den lokala disken är tillgänglig (MaxResourceVolumeMB för temp/resource disk och NvmeDiskSizeInMiB för NVMe).

  3. Gruppera VM-storlekar så att varje Virtual Machines nodpool använder en enda kompatibel placering.

Om till exempel en profil använder Standard_D4ds_v5 (temporär/resursdiskplacering) och en annan profil använder Standard_D4ads_v6 (NVMe-placering), kan du behålla dem i separata nodpooler eller använda hanterade OS-diskar.

Viktigt!

Förhandskontroll och vad händer om-beteende Det finns för närvarande inget dedikerat API för förhandskontroll som validerar blandad placering av temporära OS-diskar över skalningsprofiler före distribution. az deployment group what-if (ARM what-if) garanterar inte identifiering av den här kompatibilitetskonflikten för nodpoolen. Den auktoritativa kontrollen sker när AKS bearbetar begäran om att skapa eller uppdatera och returnerar EphemeralOSMixedPlacementNotSupported om placeringar är inkompatibla.

Förutsättningar

  • Ett Azure-abonnemang. Om du inte har någon, kan du skapa ett kostnadsfritt konto.
  • Azure CLI version 2.85.0 eller senare installerad och konfigurerad. Kör az --version för att hitta versionen. Mer information om hur du installerar eller uppgraderar Azure CLI finns i Installera Azure CLI.
  • Den här funktionen kräver Kubernetes version 1.27 eller senare. Information om hur du uppgraderar kubernetes-versionen finns i Uppgradera AKS-kluster.

Viktigt!

Krav för anpassat virtuellt nätverk: Om du distribuerar en nodpool för virtuella datorer till ett anpassat virtuellt nätverk måste klustret använda en användartilldelad hanterad identitet med minst behörigheter för nätverksdeltagare i målundernätet. Till skillnad från skalningsuppsättningar för virtuella maskiners nodpooler förlitar sig nodpooler för virtuella maskiner enbart på klusteridentiteten för undernätskopplingsåtgärder och använder inte förstapartstokens. Kluster som använder en systemtilldelad hanterad identitet misslyckas med förhandsvalidering när en nodpool för virtuella datorer skapas eller uppdateras i ett anpassat virtuellt nätverk, vilket returnerar ett InvalidParameter fel. Mer information om hur du konfigurerar en användartilldelad hanterad identitet för klustret finns i Använda en hanterad identitet i AKS.

Skapa ett AKS-kluster med nodpooler för virtuella datorer

Anmärkning

Endast en VM-storlek tillåts i en skalningsprofil och den maximala gränsen är fem VM-skalningsprofiler totalt för en nodpool för virtuella datorer.

Skapa ett AKS-kluster med nodpooler för virtuella datorer med az aks create kommandot med --vm-set-type flaggan inställd på "VirtualMachines".

I följande exempel skapas ett kluster med namnet myAKSCluster med en Virtual Machines nodpool som innehåller två noder:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type "VirtualMachines" \
    --vm-sizes "Standard_D4s_v3" \
    --node-count 2

Skapa ett AKS-kluster med nodpooler för virtuella datorer i ett anpassat virtuellt nätverk

När du distribuerar Virtual Machines nodpooler till ett anpassat virtuellt nätverk måste du skapa en användartilldelad hanterad identitet och ge den behörighet som nätverksdeltagare i målundernätet innan du skapar klustret.

  1. Skapa ett virtuellt nätverk och undernät.

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --address-prefixes 10.1.0.0/16 \
        --subnet-name mySubnet \
        --subnet-prefix 10.1.0.0/24
    
  2. Hämta resurs-ID:t för undernätet.

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group myResourceGroup \
        --vnet-name myVnet \
        --name mySubnet \
        --query id \
        --output tsv)
    
  3. Skapa en användartilldelad hanterad identitet.

    az identity create \
        --name myAKSIdentity \
        --resource-group myResourceGroup
    
  4. Hämta huvud-ID och resurs-ID för den hanterade identiteten.

    IDENTITY_PRINCIPAL_ID=$(az identity show \
        --name myAKSIdentity \
        --resource-group myResourceGroup \
        --query principalId \
        --output tsv)
    
    IDENTITY_RESOURCE_ID=$(az identity show \
        --name myAKSIdentity \
        --resource-group myResourceGroup \
        --query id \
        --output tsv)
    
  5. Tilldela rollen Network Contributor till den hanterade identiteten för målundernätet.

    az role assignment create \
        --assignee $IDENTITY_PRINCIPAL_ID \
        --role "Network Contributor" \
        --scope $SUBNET_ID
    

    Det kan ta upp till 60 minuter att sprida de behörigheter som beviljats till klustrets hanterade identitet.

  6. Kontrollera att rolltilldelningen finns i målundernätet innan du skapar klustret.

    az role assignment list \
        --assignee $IDENTITY_PRINCIPAL_ID \
        --role "Network Contributor" \
        --scope $SUBNET_ID \
        --query "[].{Role:roleDefinitionName, Scope:scope}" \
        --output table
    

    Fortsätt när utdata visar rollen Network Contributor i målundernätets omfång.

  7. Skapa AKS-klustret med nodpooler för virtuella datorer i ditt anpassade virtuella nätverk.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --vm-set-type "VirtualMachines" \
        --vm-sizes "Standard_D4s_v3" \
        --node-count 2 \
        --vnet-subnet-id $SUBNET_ID \
        --assign-identity $IDENTITY_RESOURCE_ID
    

Lägga till en nodpool för virtuella datorer i ett befintligt kluster

Lägg till en nodpool för virtuella datorer i ett befintligt kluster med az aks nodepool add kommandot med --vm-set-type flaggan inställd på "VirtualMachines".

I följande exempel läggs en nodpool för virtuella datorer med namnet myvmpool till myAKSCluster-klustret . Nodpoolen skapar en ManualScaleProfile med --vm-sizes inställd på Standard_D4s_v3 och en --node-count på 3:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-set-type "VirtualMachines" \
    --vm-sizes "Standard_D4s_v3" \
    --node-count 3

Lägga till en manuell skalningsprofil i en nodpool

Lägg till en manuell skalningsprofil till en nodpool genom att använda az aks nodepool manual-scale add med flaggan --vm-sizes inställd på "Standard_D2s_v3" och node-count inställd på 2.

I följande exempel läggs en manuell skalningsprofil till nodpoolen myvmpool i klustret myAKSCluster. Nodpoolen innehåller två noder med en VM-SKU för Standard_D2s_v3:

az aks nodepool manual-scale add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-sizes "Standard_D2s_v3" \
    --node-count 2

Uppdatera en befintlig manuell skalningsprofil

Uppdatera en befintlig manuell skalningsprofil i en nodpool med az aks nodepool manual-scale update kommandot med --vm-sizes flaggan inställd på "Standard_D2s_v3".

Anmärkning

Använd parametern --current-vm-sizes för att ange storleken på den befintliga nodpool som du vill uppdatera. Du kan uppdatera --vm-sizes och/eller --node-count. När du använder andra verktyg eller REST-API:er måste du skicka ett fullständigt agentPoolProfiles.virtualMachinesProfile.scale fält när du uppdaterar skalningsprofilen för nodpoolen.

I följande exempel uppdateras en manuell skalningsprofil till nodpoolen myvmpool i myAKSCluster-klustret . Kommandot uppdaterar antalet noder till fem och ändrar den virtuella datorns SKU från Standard_D4s_v3 till Standard_D8s_v3:

az aks nodepool manual-scale update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D4s_v3" \
    --vm-sizes "Standard_D8s_v3" \
    --node-count 5

Ta bort en manuell skalningsprofil

Ta bort en befintlig manuell skalningsprofil med kommandot az aks nodepool manual-scale delete .

Anmärkning

Parametern --current-vm-sizes anger storleken på den befintliga nodpoolen som ska tas bort. När du använder andra verktyg eller REST-API:er för att uppdatera skalningsprofilen för nodpoolen skickar du ett fullständigt agentPoolProfiles.virtualMachinesProfile.scale fält.

I följande exempel tas den manuella skalningsprofilen bort för Standard_D8s_v3 VM-SKU:n i nodepoolen myvmpool.

az aks nodepool manual-scale delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D8s_v3"

Autoskalning av kluster med Virtual Machines nodpooler (förhandsversion)

Nodpooler för virtuella datorer stöder autoskalning av kluster. Den här förhandsgranskningsfunktionen kräver Azure CLI version 2.85.0 eller senare, aks-preview tillägget och registreringen av funktionsflagganVMsAgentPoolAutoscalePreview. När du har uppfyllt dessa krav kan du använda --enable-cluster-autoscaler när klustret skapas, när du lägger till en ny nodpool eller när du uppdaterar en befintlig manuell nodpool.

När du använder autoskalning av kluster med Virtual Machines nodpooler är beteendet följande:

Autoskalningsåtgärd Behavior
Skala upp Den automatiska skalningen reagerar på tryck från väntande poddar och kan öka antalet noder för flera VM-storlekar i nodpoolen.
Skala ned Autoskalaren väljer en nod utifrån utnyttjandegrad. Du kan konfigurera scale-down-utilization-threshold för att justera när autoskalningen utlöser en nedskalningsåtgärd. Mer information finns i cluster autoscaler.

Begränsningar

  • Den här funktionen är endast tillgänglig i det offentliga molnet.
  • GPU-noder stöds inte för närvarande.
  • Den här funktionen kräver Azure CLI version 2.85.0 eller senare och aks-preview tillägget.

Installera aks-preview-tillägget

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview

Registrera funktionsflagga

Registrera funktionsflaggan VMsAgentPoolAutoscalePreviewaz feature register för förhandsversionen med kommandot :

az feature register \
    --namespace Microsoft.ContainerService \
    --name VMsAgentPoolAutoscalePreview

Det tar några minuter innan statusen blir Registered. Kontrollera registreringsstatusen med hjälp av az feature show kommandot:

az feature show \
    --namespace Microsoft.ContainerService \
    --name VMsAgentPoolAutoscalePreview \
    --query properties.state \
    --output tsv

När statusen är Registereduppdaterar du resursproviderregistreringen Microsoft.ContainerServiceaz provider register med kommandot :

az provider register --namespace Microsoft.ContainerService

Skapa ett AKS-kluster med Virtual Machines nodpooler och autoskalning av kluster aktiverat

  • Skapa ett AKS-kluster med nodpooler för virtuell dator med az aks create-kommandot, där flaggan är inställd på --vm-set-type och med flaggan "VirtualMachines".

I följande exempel skapas ett kluster med namnet myAKSCluster med en Virtual Machines nodpool som använder nodstorleken Standard_D4s_v3, ett minsta nodantal på 2 och ett maximalt antal noder på 5:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type "VirtualMachines" \
    --node-vm-size "Standard_D4s_v3" \
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5

Lägga till en nodpool för virtuella datorer med autoskalning av kluster aktiverat i ett befintligt kluster

  • Skapa en nodpool för virtuella datorer med az aks nodepool add kommandot med --vm-set-type flaggan inställd på "VirtualMachines" och med flaggan --enable-cluster-autoscaler.

I följande exempel läggs nodpoolen för virtuella maskiner, myvmpool, till med klusterautoskalning aktiverad i ett kluster med namnet myAKSCluster med storleken "Standard_D4s_v3" och ett lägsta antal noder på 2 och maximalt antal 5.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-set-type "VirtualMachines" \
    --node-vm-size "Standard_D4s_v3" \
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5

Uppdatera autoskalningsinställningar för kluster för en Virtual Machines nodpool

I följande exempel uppdateras inställningarna för nodpoolen myvmpool för virtuella datorer i klustret myAKSCluster med storleken "Standard_D4s_v3":

az aks nodepool auto-scale update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-node-vm-size "Standard_D4s_v3" \
    --min-count 3 \
    --max-count 7

Växla Virtual Machines nodpoolens skalningsprofiler från manuellt till autoskalningsläge

I följande exempel uppdateras Virtual Machines nodpoolen myvmpool i klustret med namnet myAKSCluster och konverterar alla manuella skalningsprofiler till autoskalningsprofiler med samma minsta och högsta antal noder:

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5

Inaktivera autoskalning av kluster i en Virtual Machines nodpool

Du kan inaktivera autoskalning av kluster eller växla alla skalningsprofiler i en nodpool för virtuella datorer från Auto läge till Manual läge.

I följande exempel inaktiveras autoskalning av kluster för den Virtual Machines nodpoolen myvmpool i klustret med namnet myAKSCluster. Den växlar alla skalningsprofiler från Auto läge till Manual läge:

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --disable-cluster-autoscaler

Nästa steg

I den här artikeln har du lärt dig hur du använder nodpooler för virtuella datorer i AKS. Mer information om nodpooler i AKS finns i Skapa nodpooler.