Tilldela kapacitetsreservationsgrupper till Azure Kubernetes Service-nodpooler (AKS)

När arbetsbelastningens krav ändras kan du associera befintliga kapacitetsreservationsgrupper (CRG:er) med dina Azure Kubernetes Service-nodpooler (AKS) för att garantera allokerad kapacitet för dem. Med kapacitetsreservationsgrupper kan du reservera beräkningskapacitet i en Azure-region eller tillgänglighetszon under en tidsperiod. Den här funktionen är användbar för arbetsbelastningar som kräver garanterad kapacitet, till exempel de med förutsägbara trafikmönster eller de som behöver uppfylla specifika prestandakrav.

I den här artikeln får du lära dig hur du använder kapacitetsreservationsgrupper med nodpooler i AKS.

Anmärkning

När en nodpool tas bort, kopplas den automatiskt från en associerad kapacitetsreservationsgrupp innan den tas bort. När du tar bort ett kluster, kopplas alla nodpooler i klustret implicit från deras associerade kapacitetsreservationsgrupper.

Förutsättningar för att använda kapacitetsreservationsgrupper med AKS-nodpooler

  • Du behöver Azure CLI version 2.56 eller senare installerad och konfigurerad. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI.
  • Du behöver en befintlig kapacitetsreservationsgrupp med minst en kapacitetsreservation. Annars läggs nodpoolen till i klustret med en varning och ingen kapacitetsreservationsgrupp blir associerad.
  • Du måste skapa en användartilldelad hanterad identitet med Contributor rollen för resursgruppen som innehåller kapacitetsreservationsgruppen och tilldela identiteten till ditt AKS-kluster. Systemtilldelade hanterade identiteter fungerar inte för den här funktionen.

Important

För delade kapacitetsreservationsgrupper eller kapacitetsreservationsgrupper mellan prenumerationer måste användaren eller tjänsthuvudnamnet som kör AKS-kommandot ha behörigheten Microsoft.Compute/capacityReservationGroups/write för den länkade kapacitetsreservationsgruppen. Konsumentbehörigheter för detaljerad delad kapacitetsreservationsgrupp som används för virtuella datorer, till exempel Microsoft.Compute/capacityReservationGroups/deploy/action, räcker för närvarande inte för att associera en AKS-nodpool med en kapacitetsreservationsgrupp.

Behörigheter som tilldelats AKS-klustrets hanterade identitet ersätter inte den här behörighetskontrollen för anroparen. Den klusterhanterade identiteten behöver fortfarande de behörigheter som krävs för den resursgrupp som innehåller kapacitetsreservationsgruppen enligt beskrivningen i den här artikeln.

Skapa en användartilldelad hanterad identitet och tilldela den till ett AKS-kluster

  1. Skapa en användartilldelad hanterad identitet med kommandot az identity create .

    az identity create --name <identity-name> --resource-group <resource-group-name> --location <location>
    
  2. Hämta ID:t för den användartilldelade hanterade identiteten az identity show med kommandot och ange den till en miljövariabel.

    IDENTITY_ID=$(az identity show --name <identity-name> --resource-group <resource-group-name> --query identity.id -o tsv)
    
  3. Tilldela Contributor rollen till den användartilldelade identiteten med az role assignment create kommandot.

    az role assignment create --assignee $IDENTITY_ID --role "Contributor" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
    

    Det kan ta upp till 60 minuter innan rolltilldelningen sprids.

  4. Tilldela den hanterade identiteten som användaren har tilldelat till ett nytt eller befintligt AKS-kluster med hjälp av flagga --assign-identity med kommandot az aks create eller az aks update.

    # Create a new AKS cluster with the user-assigned managed identity
    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --location <location> \
        --node-vm-size <vm-size> --node-count <node-count> \
        --assign-identity $IDENTITY_ID \
        --generate-ssh-keys
    
    # Update an existing AKS cluster to use the user-assigned managed identity
    az aks update \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --location <location> \
        --node-vm-size <vm-size> \
        --node-count <node-count> \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID         
    

Hämta ID för en befintlig kapacitetsreservationsgrupp

Hämta ID:t för en befintlig kapacitetsreservationsgrupp med hjälp az capacity reservation group show av kommandot och ange det till en miljövariabel.

CRG_ID=$(az capacity reservation group show --capacity-reservation-group <crg-name> --resource-group <resource-group-name> --query id -o tsv)

Associera en befintlig kapacitetsreservationsgrupp med ett nytt kluster

Associera en befintlig kapacitetsreservationsgrupp med standardsystemnodpoolen när klustret skapas genom att köra az aks create kommandot med flaggorna --assign-identity och --crg-id .

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --node-vm-size <vm-size> \
    --node-count <node-count> \
    --assign-identity $IDENTITY_ID \
    --crg-id $CRG_ID \
    --generate-ssh-keys

Associera en befintlig kapacitetsreservationsgrupp med en ny nodpool

Associera en befintlig kapacitetsreservationsgrupp med en ny användarnodpool med hjälp av kommandot az aks nodepool add med flaggan --crg-id.

az aks nodepool add --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --crg-id $CRG_ID

Om du vill associera en befintlig kapacitetsreservationsgrupp med en ny systemnodpool skapar du nodpoolen med flaggorna --mode System och --crg-id . För produktionskluster använder du minst tre noder för systemnodpooler.

az aks nodepool add \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --name <system-node-pool-name> \
    --mode System \
    --node-count 3 \
    --node-taints CriticalAddonsOnly=true:NoSchedule \
    --crg-id $CRG_ID

Associera en befintlig kapacitetsreservationsgrupp med en befintlig nodpool (förhandsversion)

Koppla en befintlig kapacitetsreservationsgrupp till en befintlig nodpool med hjälp av kommandot az aks nodepool update med --crg-id-flaggan.

  • För zonindeala nodpooler initierar den här åtgärden en löpande uppdatering av målnodpoolen. Uppdateringsprocessen omfattar rullande avspärrning och tömning av alla noder, följt av en omstart för att tillämpa ändringen.
  • För icke-zonindelade (regionala) användarnodpooler under förhandsversionen skalar du först nodpoolen till noll och tillämpar sedan kapacitetsreservationsgruppen.
  • För systemnodpooler som inte är zonindelade (regionala) ska du inte skala systemnodpoolen till noll. Skapa i stället en ny systemnodpool som är associerad med kapacitetsreservationsgruppen, kontrollera att den nya nodpoolen är klar och ta sedan bort den gamla systemnodpoolen. AKS kräver minst en systemnodpool hela tiden.

Prerequisites

  • aks-preview Installera Azure CLI-tilläggsversionen 20.0.0b7 eller senare innan du kör det här kommandot.

  • Se till att kapacitetsreservationsgruppen har tillräckligt med kapacitet för uppgraderingsstrategin för nodpoolen. När maxSurge > 0reserverar du extra kapacitet för det maximala överspänningsvärdet . Till exempel kan en pool med 10 noder med maxSurge inställd på 2 köra upp till 12 noder under en uppgradering. Den här extra kapaciteten krävs inte för utrullningar endast med maxUnavailable eller regionala sökvägar som skalats ned till noll.

    az aks nodepool update --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --crg-id $CRG_ID
    

    Om kommandot misslyckas med LinkedAuthorizationFailed och refererar till Microsoft.Compute/capacityReservationGroups/write, beviljar du den behörigheten till den inloggade användaren eller tjänsthuvudnamnet som kör kommandot för målkapacitetsreservationsgruppen.

Nästa steg: Hantera nodpooler i AKS

Mer information om hur du hanterar nodpooler i AKS finns i Hantera nodpooler i Azure Kubernetes Service (AKS). Mer information om hur du lägger till, uppdaterar eller tar bort systemnodpooler finns i Använd systemnodpooler i Azure Kubernetes Service (AKS).