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.
Anteckning
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.
- Du behöver Azure CLI version 2.2.0 eller senare installerad och konfigurerad. Kör
az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. - Gå igenom Lagringsalternativ för program i Azure Kubernetes Service för att planera lagringskonfigurationen.
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.
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.
Skapa en Azure-resursgrupp med kommandot
az group create
.az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
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.
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
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.
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
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-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 .
- 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ä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-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ä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
Du kan migrera dina befintliga Ubuntu-noder till Azure Linux med någon av följande metoder:
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.
Anteckning
Se till att använda Azure CLI-versionen 2.35.0
eller senare.
- 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öraaz 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ä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
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).
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ändercontainerd
ä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ägg till en Windows Server-nodpool med
containerd
i ditt befintliga kluster med hjälp avaz aks nodepool add
.Anteckning
Om du inte anger det
WindowsContainerRuntime=containerd
anpassade huvudet användercontainerd
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 nodpool från Docker till
containerd
med kommandotaz 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 nodpooler från Docker till
containerd
med kommandotaz 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
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
.Anteckning
- Du kan ange tillfälliga OS-diskar när klustret skapas med hjälp av
--node-osdisk-type
flaggan medaz aks create
kommandot . - Om du vill skapa nodpooler med nätverksanslutna OS-diskar kan du göra det genom att
--node-osdisk-type Managed
ange .
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
- Du kan ange tillfälliga OS-diskar när klustret skapas med hjälp av
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-size
av , men tänk på att den minsta storleken för AKS-avbildningar är 30 GB.
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.
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).
Feedback om Azure Kubernetes Service
Azure Kubernetes Service är ett öppen källkod projekt. Välj en länk för att ge feedback: