Hantera systemnodpooler i Azure Kubernetes Service (AKS)
I Azure Kubernetes Service (AKS) grupperas noder med samma konfiguration i nodpooler. Nodpooler innehåller de underliggande virtuella datorer som kör dina program. Systemnodpooler och användarnodpooler är två olika nodpoollägen för dina AKS-kluster. Systemnodpooler har det primära syftet att vara värd för kritiska systempoddar som CoreDNS
och metrics-server
. Användarnodpooler har det primära syftet att vara värd för dina programpoddar. Programpoddar kan dock schemaläggas i systemnodpooler om du bara vill ha en pool i AKS-klustret. Varje AKS-kluster måste innehålla minst en systemnodpool med minst två noder.
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.
Den här artikeln beskriver hur du hanterar systemnodpooler i AKS. Information om hur du använder flera nodpooler finns i Använda flera nodpooler.
Innan du börjar
Du behöver Azure CLI version 2.3.1 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.
Begränsningar
Följande begränsningar gäller när du skapar och hanterar AKS-kluster som stöder systemnodpooler.
- Se Kvoter, storleksbegränsningar för virtuella datorer och regiontillgänglighet i AKS.
- En API-version av 2020-03-01 eller senare måste användas för att ange ett nodpoolläge. Kluster som skapats i API-versioner som är äldre än 2020-03-01 innehåller endast användarnodpooler, men kan migreras till att innehålla systemnodpooler genom att följa stegen i uppdateringspoolläget.
- 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 ett och sex tecken.
- Läget för en nodpool är en obligatorisk egenskap och måste anges explicit när du använder ARM-mallar eller direkta API-anrop.
System- och användarnodpooler
För en systemnodpool tilldelar AKS automatiskt etiketten kubernetes.azure.com/mode: system till sina noder. Detta gör att AKS föredrar att schemalägga systempoddar i nodpooler som innehåller den här etiketten. Den här etiketten hindrar dig inte från att schemalägga programpoddar i systemnodpooler. Vi rekommenderar dock att du isolerar kritiska systempoddar från dina programpoddar för att förhindra att felkonfigurerade eller oseriösa programpoddar oavsiktligt tar bort systempoddar.
Du kan framtvinga det här beteendet genom att skapa en dedikerad systemnodpool. Använd taint för CriticalAddonsOnly=true:NoSchedule
att förhindra att programpoddar schemaläggs i systemnodpooler.
Systemnodpooler har följande begränsningar:
- Systemnodpooler måste ha stöd för minst 30 poddar enligt beskrivningen i formeln för lägsta och högsta värde för poddar.
- Systempooler osType måste vara Linux.
- Användarnodpooler osType kan vara Linux eller Windows.
- Systempooler måste innehålla minst två noder och användarnodpooler kan innehålla noll eller fler noder.
- Systemnodpooler kräver en VM-SKU på minst 4 vCPU:er och 4 GB minne.
- Virtuella datorer i B-serien stöds inte för systemnodpooler.
- Minst tre noder med 8 vCPU:er eller två noder med minst 16 vCPU:er rekommenderas (till exempel Standard_DS4_v2), särskilt för stora kluster (flera CoreDNS Pod-repliker, 3–4+ tillägg osv.).
- Nodpooler för oanvänd kapacitet kräver användarnodpooler.
- Om du lägger till en annan systemnodpool eller ändrar vilken nodpool som är en systemnodpool flyttas inte systempoddar automatiskt. Systempoddar kan fortsätta att köras i samma nodpool, även om du ändrar den till en användarnodpool. Om du tar bort eller skalar ned en nodpool som kör systempoddar som tidigare var en systemnodpool, distribueras dessa systempoddar om med önskad schemaläggning till den nya systemnodpoolen.
Du kan utföra följande åtgärder med nodpooler:
- Skapa en dedikerad systemnodpool (föredrar schemaläggning av systempoddar framför nodpooler i
mode:system
) - Ändra en systemnodpool så att den blir en användarnodpool, förutsatt att du har en annan systemnodpool för att ta dess plats i AKS-klustret.
- Ändra en användarnodpool till en systemnodpool.
- Ta bort användarnodpooler.
- Du kan ta bort systemnodpooler, förutsatt att du har en annan systemnodpool som ska ta plats i AKS-klustret.
- Ett AKS-kluster kan ha flera systemnodpooler och kräver minst en systemnodpool.
- Om du vill ändra olika oföränderliga inställningar i befintliga nodpooler kan du skapa nya nodpooler som ersätter dem. Ett exempel är att lägga till en ny nodpool med en ny maxPods-inställning och ta bort den gamla nodpoolen.
- Använd nodtillhörighet för att kräva eller föredra vilka noder som kan schemaläggas baserat på nodetiketter. Du kan ange
key
tillkubernetes.azure.com
,operator
tillIn
ochvalues
för antingenuser
ellersystem
på din YAML och tillämpa den här definitionen med hjälp avkubectl apply -f yourYAML.yaml
.
Skapa ett nytt AKS-kluster med en systemnodpool
När du skapar ett nytt AKS-kluster är den första nodpoolen som standard ett typläge system
. När du skapar nya nodpooler med az aks nodepool add
är dessa nodpooler användarnodpooler om du inte uttryckligen anger lägesparametern.
I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus .
az group create --name myResourceGroup --location eastus
Använd kommandot az aks create för att skapa ett AKS-kluster. I följande exempel skapas ett kluster med namnet myAKSCluster med en dedikerad systempool som innehåller två noder. För dina produktionsarbetsbelastningar kontrollerar du att du använder systemnodpooler med minst tre noder. Den här åtgärden kan ta flera minuter att slutföra.
# Create a new AKS cluster with a single system pool
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Lägga till en dedikerad systemnodpool i ett befintligt AKS-kluster
Du kan lägga till en eller flera systemnodpooler i befintliga AKS-kluster. Vi rekommenderar att du schemalägger programpoddar på användarnodpooler och ägnar systemnodpooler till endast kritiska systempoddar. Detta förhindrar att oseriösa programpoddar oavsiktligt tar bort systempoddar. Framtvinga det här beteendet med CriticalAddonsOnly=true:NoSchedule
taint för systemnodpoolerna.
Följande kommando lägger till en dedikerad nodpool av lägestypsystem med ett standardantal på tre noder.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name systempool \
--node-count 3 \
--node-taints CriticalAddonsOnly=true:NoSchedule \
--mode System
Visa information för nodpoolen
Du kan kontrollera information om nodpoolen med följande kommando.
az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name systempool
Ett typläge System definieras för systemnodpooler och ett typläge av typen Användare definieras för användarnodpooler. För en systempool kontrollerar du att CriticalAddonsOnly=true:NoSchedule
taint är inställt på , vilket förhindrar att programpoddar schemaläggs i den här nodpoolen.
{
"agentPoolType": "VirtualMachineScaleSets",
"availabilityZones": null,
"count": 3,
"enableAutoScaling": null,
"enableNodePublicIp": false,
"id": "/subscriptions/yourSubscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/systempool",
"maxCount": null,
"maxPods": 110,
"minCount": null,
"mode": "System",
"name": "systempool",
"nodeImageVersion": "AKSUbuntu-1604-2020.06.30",
"nodeLabels": {},
"nodeTaints": [
"CriticalAddonsOnly=true:NoSchedule"
],
"orchestratorVersion": "1.16.10",
"osDiskSizeGb": 128,
"osType": "Linux",
"provisioningState": "Succeeded",
"proximityPlacementGroupId": null,
"resourceGroup": "myResourceGroup",
"scaleSetEvictionPolicy": null,
"scaleSetPriority": null,
"spotMaxPrice": null,
"tags": null,
"type": "Microsoft.ContainerService/managedClusters/agentPools",
"upgradeSettings": {
"maxSurge": null
},
"vmSize": "Standard_DS2_v2",
"vnetSubnetId": null
}
Uppdatera befintliga klustersystem- och användarnodpooler
Kommentar
En API-version av 2020-03-01 eller senare måste användas för att ange ett systemnodpoolläge. Kluster som skapats i API-versioner som är äldre än 2020-03-01 innehåller endast användarnodpooler. Om du vill ta emot funktioner och fördelar för systemnodpooler i äldre kluster uppdaterar du läget för befintliga nodpooler med följande kommandon på den senaste Azure CLI-versionen.
Du kan ändra lägen för både system- och användarnodpooler. Du kan bara ändra en systemnodpool till en användarpool om det redan finns en annan systemnodpool i AKS-klustret.
Det här kommandot ändrar en systemnodpool till en användarnodpool.
az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode user
Det här kommandot ändrar en användarnodpool till en systemnodpool.
az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode system
Ta bort en systemnodpool
Kommentar
Om du vill använda systemnodpooler i AKS-kluster före API-version 2020-03-02 lägger du till en ny systemnodpool och tar sedan bort den ursprungliga standardnodpoolen.
Du måste ha minst två systemnodpooler i AKS-klustret innan du kan ta bort en av dem.
az aks nodepool delete --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool
Rensa resurser
Om du vill ta bort klustret använder du kommandot az group delete för att ta bort AKS-resursgruppen:
az group delete --name myResourceGroup --yes --no-wait
Nästa steg
I den här artikeln har du lärt dig hur du skapar och hanterar systemnodpooler i ett AKS-kluster. Information om hur du startar och stoppar AKS-nodpooler finns i starta och stoppa AKS-nodpooler.
Azure Kubernetes Service