Dela via


Skapa nodpooler för ett kluster i Azure Kubernetes Service (AKS)

I Azure Kubernetes Service (AKS) grupperas noder med samma konfiguration i nodpooler. Dessa nodpooler innehåller de underliggande virtuella datorer som kör dina program. När du skapar ett AKS-kluster definierar du det inledande antalet noder och deras storlek (SKU), som skapar en systemnodpool.

För att stödja program som har olika beräknings- eller lagringskrav kan du skapa användarnodpooler. Systemnodpooler har det primära syftet att vara värd för kritiska systempoddar som CoreDNS och konnectivity. Användarnodpooler har det primära syftet att vara värd för dina programpoddar. Använd till exempel fler användarnodpooler för att tillhandahålla GPU:er för beräkningsintensiva program eller åtkomst till SSD-lagring med höga prestanda. Men om du bara vill ha en pool i ditt AKS-kluster kan du schemalägga programpoddar i systemnodpooler.

Kommentar

Den här funktionen ger mer kontroll över att skapa och hantera flera nodpooler och kräver separata kommandon för crud-åtgärder (create/update/delete ). Tidigare använde eller använde klusteråtgärder az aks create az aks update api:et managedCluster och var de enda alternativen för att ändra kontrollplanet och en enda nodpool. Den här funktionen exponerar en separat åtgärdsuppsättning för agentpooler via agentPool-API:et och kräver användning av kommandouppsättningen az aks nodepool för att köra åtgärder på en enskild nodpool.

Den här artikeln visar hur du skapar en eller flera nodpooler i ett AKS-kluster.

Innan du börjar

Begränsningar

Följande begränsningar gäller när du skapar AKS-kluster som stöder flera nodpooler:

  • Se Kvoter, storleksbegränsningar för virtuella datorer och regiontillgänglighet i Azure Kubernetes Service (AKS).
  • Du kan ta bort systemnodpoolen om du har en annan systemnodpool som ska ta plats i AKS-klustret. Annars kan du inte ta bort systemnodpoolen.
  • Systempooler måste innehålla minst en nod och användarnodpooler kan innehålla noll eller fler noder.
  • AKS-klustret måste använda standard-SKU-lastbalanseraren för att använda flera nodpooler. Den här funktionen stöds inte med Basic SKU-lastbalanserare.
  • AKS-klustret måste använda VM-skalningsuppsättningar för noderna.
  • Namnet på en nodpool får bara innehålla alfanumeriska gemener och måste börja med en gemen bokstav.
    • För Linux-nodpooler måste längden vara mellan 1 och 12 tecken.
    • För Windows-nodpooler måste längden vara mellan 1 och 6 tecken.
  • Alla nodpooler måste finnas i samma virtuella nätverk.
  • När du skapar flera nodpooler när klustret skapas måste Kubernetes-versionerna för nodpoolerna matcha versionuppsättningen för kontrollplanet.

Skapa ett AKS-kluster

Viktigt!

Om du kör en enda systemnodpool för ditt AKS-kluster i en produktionsmiljö rekommenderar vi att du använder minst tre noder för nodpoolen. Om en nod går ned förlorar du kontrollplansresurser och redundansen komprometteras. Du kan minska den här risken genom att ha fler kontrollplansnoder.

  1. Skapa en Azure-resursgrupp med kommandot az group create .

    az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
    
  2. Skapa ett AKS-kluster med en enda nodpool med kommandot az aks create .

    az aks create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --location $LOCATION \
        --load-balancer-sku standard \
        --generate-ssh-keys
    

    Det tar några minuter att skapa klustret.

  3. När klustret är klart hämtar du autentiseringsuppgifterna för az aks get-credentials klustret med kommandot .

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

Lägga till en nodpool

Klustret som skapades i föregående steg har en enda nodpool. I det här avsnittet lägger vi till en andra nodpool i klustret.

  1. Skapa en ny nodpool med kommandot az aks nodepool add . I följande exempel skapas en nodpool med namnet mynodepool som kör tre noder:

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 3
    
  2. Kontrollera statusen för dina nodpooler med kommandot az aks node pool list och ange resursgruppen och klusternamnet.

    az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
    

    Följande exempelutdata visar att mynodepool har skapats med tre noder. När AKS-klustret skapades i föregående steg skapades en standardnodpool1 med nodantalet 2.

    [
      {
        ...
        "count": 3,
        ...
        "name": "mynodepool",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "nodepool1",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

ARM64-nodpooler

ARM64-processorn ger låg effektberäkning för dina Kubernetes-arbetsbelastningar. Om du vill skapa en ARM64-nodpool måste du välja en virtuell dator i Dpsv5-, Dplsv5 - eller Epsv5-serien .

Begränsningar

  • ARM64-nodpooler stöds inte i Defender-aktiverade kluster med Kubernetes version mindre än 1.29.0.
  • FIPS-aktiverade nodpooler stöds inte med ARM64-SKU:er.
  • Windows-nodpooler stöds inte med ARM64-SKU:er.

Lägga till en ARM64-nodpool

  • Lägg till en ARM64-nodpool i ditt befintliga kluster med hjälp av az aks nodepool add.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $ARM_NODE_POOL_NAME \
        --node-count 3 \
        --node-vm-size Standard_D2pds_v5
    

Azure Linux-nodpooler

Azure Linux-containervärden för AKS är en Linux-distribution med öppen källkod som är tillgänglig som en AKS-containervärd. Det ger hög tillförlitlighet, säkerhet och konsekvens. Den innehåller bara den minimala uppsättning paket som behövs för att köra containerarbetsbelastningar, vilket förbättrar starttiderna och övergripande prestanda.

Lägga till en Azure Linux-nodpool

  • Lägg till en Azure Linux-nodpool i ditt befintliga kluster med kommandot az aks nodepool add och ange --os-sku AzureLinux.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $AZ_LINUX_NODE_POOL_NAME \
        --os-sku AzureLinux
    

Migrera Ubuntu-noder till Azure Linux-noder

Du kan migrera dina befintliga Ubuntu-noder till Azure Linux med någon av följande metoder:

Nodpooler med unika undernät

En arbetsbelastning kan kräva att klusternoder delas upp i separata pooler för logisk isolering. Separata undernät som är dedikerade till varje nodpool i klustret kan hjälpa till att stödja den här isoleringen, som kan uppfylla krav som att ha icke-sammanhängande adressutrymme för virtuella nätverk som ska delas mellan nodpooler.

Kommentar

Se till att använda Azure CLI-versionen 2.35.0 eller senare.

Begränsningar

  • Alla undernät som tilldelats nodpooler måste tillhöra samma virtuella nätverk.
  • Systempoddar måste ha åtkomst till alla noder och poddar i klustret för att tillhandahålla viktiga funktioner, till exempel DNS-matchning och tunneltrafik för kubectl-loggar/exec/port-forward-proxy.
  • Om du expanderar det virtuella nätverket när du har skapat klustret måste du uppdatera klustret innan du lägger till ett undernät utanför det ursprungliga CIDR-blocket. AkS-fel i agentpoolen läggs till, aks-preview men Azure CLI-tillägget (version 0.5.66 och senare) har nu stöd för att köra az aks update kommandot med endast de argument som krävs -g <resourceGroup> -n <clusterName> . Det här kommandot utför en uppdateringsåtgärd utan att göra några ändringar, vilket kan återställa ett kluster som fastnat i ett misslyckat tillstånd.
  • I kluster med Kubernetes version mindre än 1.23.3, kube-proxy SNATs-trafik från nya undernät, vilket kan leda till att Azure Network Policy släpper paketen.
  • Windows-noder SNAT-trafik till de nya undernäten tills nodpoolen har återskapats.
  • Interna lastbalanserare är som standard ett av nodpoolens undernät.

Lägga till en nodpool med ett unikt undernät

  • Lägg till en nodpool med ett unikt undernät i ditt befintliga kluster med kommandot az aks nodepool add och ange --vnet-subnet-id.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 3 \
        --vnet-subnet-id $SUBNET_RESOURCE_ID
    

FIPS-aktiverade nodpooler

Mer information om hur du aktiverar FIPS (Federal Information Process Standard) för aks-klustret finns i Aktivera FIPS (Federal Information Process Standard) för Azure Kubernetes Service-nodpooler (AKS).

Windows Server-nodpooler med containerd

Från och med Kubernetes version 1.20 och senare kan du ange containerd som containerkörning för Windows Server 2019-nodpooler. Från och med Kubernetes 1.23 containerd är standard och endast containerkörning för Windows.

Viktigt!

När du använder containerd med Windows Server 2019-nodpooler:

  • Både kontrollplanet och Windows Server 2019-nodpoolerna måste använda Kubernetes version 1.20 eller senare.
  • När du skapar eller uppdaterar en nodpool för att köra Windows Server-containrar är standardvärdet för --node-vm-size Standard_D2s_v3, vilket var den minsta rekommenderade storleken för Windows Server 2019-nodpooler före Kubernetes version 1.20. Den minsta rekommenderade storleken för Windows Server 2019-nodpooler som använder containerd är Standard_D4s_v3. När du anger parametern --node-vm-size kontrollerar du listan över begränsade VM-storlekar.
  • Vi rekommenderar att du använder taints eller etiketter med dina Windows Server 2019-nodpooler som kör containerd och toleranser eller nodväljare med dina distributioner för att garantera att dina arbetsbelastningar är korrekt schemalagda.

Lägga till en Windows Server-nodpool med containerd

  • Lägg till en Windows Server-nodpool med containerd i ditt befintliga kluster med hjälp av az aks nodepool add.

    Kommentar

    Om du inte anger det WindowsContainerRuntime=containerd anpassade huvudet använder containerd nodpoolen fortfarande som containerkörning som standard.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --os-type Windows \
        --name $CONTAINER_D_NODE_POOL_NAME \
        --node-vm-size Standard_D4s_v3 \
        --kubernetes-version 1.20.5 \
        --aks-custom-headers WindowsContainerRuntime=containerd \
        --node-count 1
    

Uppgradera en specifik befintlig Windows Server-nodpool till containerd

  • Uppgradera en specifik nodpool från Docker till containerd med kommandot az aks nodepool upgrade .

    az aks nodepool upgrade \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $CONTAINER_D_NODE_POOL_NAME \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

Uppgradera alla befintliga Windows Server-nodpooler till containerd

  • Uppgradera alla nodpooler från Docker till containerd med kommandot az aks nodepool upgrade .

    az aks nodepool upgrade \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

Nodpooler med tillfälliga OS-diskar

  • Lägg till en nodpool som använder tillfälliga OS-diskar i ett befintligt kluster med az aks nodepool add kommandot med --node-osdisk-type flaggan inställd på Ephemeral.

    Kommentar

    • Du kan ange tillfälliga OS-diskar när klustret skapas med hjälp av --node-osdisk-type flaggan med az aks create kommandot .
    • Om du vill skapa nodpooler med nätverksanslutna OS-diskar kan du göra det genom att --node-osdisk-type Managedange .
    az aks nodepool add --name $EPHEMERAL_NODE_POOL_NAME --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME -s Standard_DS3_v2 --node-osdisk-type Ephemeral
    

Viktigt!

Med tillfälliga operativsystem kan du distribuera virtuella datorer och instansavbildningar upp till storleken på den virtuella datorns cacheminne. Standardkonfigurationen för nod-OS-disken i AKS använder 128 GB, vilket innebär att du behöver en VM-storlek som har en cache som är större än 128 GB. Standardvärdet Standard_DS2_v2 har en cachestorlek på 86 GB, vilket inte är tillräckligt stort. Den Standard_DS3_v2 virtuella datorns SKU har en cachestorlek på 172 GB, vilket är tillräckligt stort. Du kan också minska standardstorleken för OS-disken med hjälp --node-osdisk-sizeav , men tänk på att den minsta storleken för AKS-avbildningar är 30 GB.

Ta bort en nodpool

Om du inte längre behöver en nodpool kan du ta bort den och ta bort de underliggande VM-noderna.

Varning

När du tar bort en nodpool utför AKS inte avspärrning och tömning, och det finns inga återställningsalternativ för dataförlust som kan uppstå när du tar bort en nodpool. Om poddar inte kan schemaläggas i andra nodpooler blir dessa program otillgängliga. Se till att du inte tar bort en nodpool när program som används inte har säkerhetskopiering av data eller möjligheten att köras på andra nodpooler i klustret. För att minimera avbrott i omplanerade poddar som för närvarande körs på den nodpool som du vill ta bort, utför du en avspärrning och tömmer alla noder i nodpoolen innan du tar bort den.

  • Ta bort en nodpool med kommandot az aks nodepool delete och ange namnet på nodpoolen.

    az aks nodepool delete --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --no-wait
    

    Det tar några minuter att ta bort noderna och nodpoolen.

Nästa steg

I den här artikeln har du lärt dig hur du skapar flera nodpooler i ett AKS-kluster. Mer information om hur du hanterar flera nodpooler finns i Hantera flera nodpooler för ett kluster i Azure Kubernetes Service (AKS).