Knooppuntgroepen beheren in Azure Kubernetes Service (AKS)

In Azure Kubernetes Service (AKS) worden knooppunten van dezelfde configuratie gegroepeerd in knooppuntgroepen. Knooppuntgroepen bevatten de onderliggende VM's waarop uw toepassingen worden uitgevoerd. Systeemknooppuntgroepen en gebruikersknooppuntgroepen zijn twee verschillende modi voor knooppuntgroepen voor uw AKS-clusters. Systeemknooppuntgroepen dienen het primaire doel van het hosten van kritieke systeempods, zoals CoreDNS en metrics-server. Gebruikersknooppuntgroepen dienen het primaire doel van het hosten van uw toepassingspods. Toepassingspods kunnen echter worden gepland in systeemknooppuntgroepen als u slechts één pool in uw AKS-cluster wilt hebben. Elk AKS-cluster moet ten minste één systeemknooppuntgroep met ten minste twee knooppunten bevatten.

Belangrijk

Als u één systeemknooppuntgroep uitvoert voor uw AKS-cluster in een productieomgeving, raden we u aan ten minste drie knooppunten voor de knooppuntgroep te gebruiken.

In dit artikel wordt uitgelegd hoe u systeemknooppuntgroepen beheert in AKS. Zie Meerdere knooppuntgroepen gebruiken voor meer informatie over het gebruik van meerdere knooppuntgroepen.

Voordat u begint

U moet Azure CLI versie 2.3.1 of hoger hebben geïnstalleerd en geconfigureerd. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Beperkingen

De volgende beperkingen gelden wanneer u AKS-clusters maakt en beheert die ondersteuning bieden voor systeemknooppuntgroepen.

  • Zie Quota, VM-groottebeperkingen en beschikbaarheid van regio's in AKS.
  • Een API-versie van 2020-03-01 of hoger moet worden gebruikt om een knooppuntgroepmodus in te stellen. Clusters die zijn gemaakt op API-versies die ouder zijn dan 2020-03-01, bevatten alleen gebruikersknooppuntgroepen, maar kunnen worden gemigreerd om systeemknooppuntgroepen te bevatten door de stappen in de updategroepmodus te volgen.
  • De naam van een knooppuntgroep mag alleen alfanumerieke tekens in kleine letters bevatten en moet beginnen met een kleine letter. Voor Linux-knooppuntgroepen moet de lengte tussen 1 en 12 tekens lang zijn. Voor Windows-knooppuntgroepen moet de lengte tussen één en zes tekens lang zijn.
  • De modus van een knooppuntgroep is een vereiste eigenschap en moet expliciet worden ingesteld bij het gebruik van ARM-sjablonen of directe API-aanroepen.

Systeem- en gebruikersknooppuntgroepen

Voor een systeemknooppuntgroep wijst AKS automatisch het label toe kubernetes.azure.com/mode: systeem aan de knooppunten. Dit zorgt ervoor dat AKS liever systeempods plant in knooppuntgroepen die dit label bevatten. Dit label voorkomt niet dat u toepassingspods plant in systeemknooppuntgroepen. We raden u echter aan kritieke systeempods te isoleren van uw toepassingspods om te voorkomen dat onjuist geconfigureerde of frauduleuze toepassingspods per ongeluk systeempods worden verwijderd.

U kunt dit gedrag afdwingen door een toegewezen systeemknooppuntgroep te maken. Gebruik de CriticalAddonsOnly=true:NoSchedule taint om te voorkomen dat toepassingspods worden gepland in systeemknooppuntgroepen.

Systeemknooppuntgroepen hebben de volgende beperkingen:

  • Systeemknooppuntgroepen moeten ten minste 30 pods ondersteunen, zoals beschreven door de formule voor de minimum- en maximumwaarde voor pods.
  • Systeemgroepen osType moet Linux zijn.
  • Gebruikersknooppuntgroepen osType kunnen Linux of Windows zijn.
  • Systeemgroepen moeten ten minste twee knooppunten bevatten en gebruikersknooppuntgroepen kunnen nul of meer knooppunten bevatten.
  • Voor systeemknooppuntgroepen is een VM-SKU van ten minste 4 vCPU's en 4 GB geheugen vereist.
  • VM's uit de B-serie worden niet ondersteund voor systeemknooppuntgroepen.
  • Minimaal drie knooppunten van 8 vCPU's of twee knooppunten van ten minste 16 vCPU's wordt aanbevolen (bijvoorbeeld Standard_DS4_v2), met name voor grote clusters (Meerdere CoreDNS Pod-replica's, 3-4+ invoegtoepassingen, enzovoort).
  • Spot-knooppuntgroepen vereisen gebruikersknooppuntgroepen.
  • Door een andere systeemknooppuntgroep toe te voegen of te wijzigen welke knooppuntgroep een systeemknooppuntgroep is, worden systeempods niet automatisch verplaatst. Systeempods kunnen blijven worden uitgevoerd in dezelfde knooppuntgroep, zelfs als u deze wijzigt in een gebruikersknooppuntgroep. Als u een knooppuntgroep verwijdert of omlaag schaalt waarop systeempods worden uitgevoerd die eerder een systeemknooppuntgroep waren, worden deze systeempods opnieuw geïmplementeerd met voorkeursplanning naar de nieuwe systeemknooppuntgroep.

U kunt de volgende bewerkingen uitvoeren met knooppuntgroepen:

  • Een toegewezen systeemknooppuntgroep maken (de voorkeur geven aan het plannen van systeempods naar knooppuntgroepen van mode:system)
  • Wijzig een systeemknooppuntgroep in een gebruikersknooppuntgroep, mits u een andere systeemknooppuntgroep hebt om deze in het AKS-cluster te plaatsen.
  • Wijzig een gebruikersknooppuntgroep in een systeemknooppuntgroep.
  • Verwijder gebruikersknooppuntgroepen.
  • U kunt systeemknooppuntgroepen verwijderen, mits u een andere systeemknooppuntgroep hebt die in het AKS-cluster moet worden geplaatst.
  • Een AKS-cluster kan meerdere systeemknooppuntgroepen hebben en vereist ten minste één systeemknooppuntgroep.
  • Als u verschillende onveranderbare instellingen voor bestaande knooppuntgroepen wilt wijzigen, kunt u nieuwe knooppuntgroepen maken om deze te vervangen. Een voorbeeld is het toevoegen van een nieuwe knooppuntgroep met een nieuwe maxPods-instelling en het verwijderen van de oude knooppuntgroep.
  • Gebruik knooppuntaffiniteit om te vereisen of de voorkeur te geven aan welke knooppunten kunnen worden gepland op basis van knooppuntlabels. U kunt deze definitie kubectl apply -f yourYAML.yamlinstellen key opkubernetes.azure.com, operator op Inen values van user of system op uw YAML.

Een nieuw AKS-cluster maken met een systeemknooppuntgroep

Wanneer u een nieuw AKS-cluster maakt, wordt de eerste knooppuntgroep standaard ingesteld op een modus van het type system. Wanneer u nieuwe knooppuntgroepen maakt, az aks nodepool addzijn deze knooppuntgroepen gebruikersknooppuntgroepen, tenzij u expliciet de modusparameter opgeeft.

In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt in de regio eastus.

az group create --name myResourceGroup --location eastus

Gebruik de opdracht az aks create om een AKS-cluster te maken. In het volgende voorbeeld wordt een cluster met de naam myAKSCluster gemaakt met één toegewezen systeemgroep die twee knooppunten bevat. Voor uw productieworkloads moet u ervoor zorgen dat u systeemknooppuntgroepen met ten minste drie knooppunten gebruikt. Deze bewerking kan enkele minuten duren.

# Create a new AKS cluster with a single system pool
az aks create -g myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys

Een toegewezen systeemknooppuntgroep toevoegen aan een bestaand AKS-cluster

U kunt een of meer systeemknooppuntgroepen toevoegen aan bestaande AKS-clusters. Het is raadzaam om uw toepassingspods in gebruikersknooppuntgroepen te plannen en systeemknooppuntgroepen toe te voegen aan alleen kritieke systeempods. Dit voorkomt dat rogue toepassingspods per ongeluk systeempods verwijderen. Dwing dit gedrag af met de CriticalAddonsOnly=true:NoScheduletaint voor uw systeemknooppuntgroepen.

Met de volgende opdracht wordt een toegewezen knooppuntgroep van het modustypesysteem toegevoegd met een standaardaantal van drie knooppunten.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name systempool \
    --node-count 3 \
    --node-taints CriticalAddonsOnly=true:NoSchedule \
    --mode System

Details weergeven voor uw knooppuntgroep

U kunt de details van uw knooppuntgroep controleren met de volgende opdracht.

az aks nodepool show -g myResourceGroup --cluster-name myAKSCluster -n systempool

Er wordt een modus van het type Systeem gedefinieerd voor systeemknooppuntgroepen en een modus van het type Gebruiker wordt gedefinieerd voor gebruikersknooppuntgroepen. Controleer voor een systeemgroep of de taint is ingesteld op CriticalAddonsOnly=true:NoSchedule, waardoor toepassingspods niet kunnen worden gepland in deze knooppuntgroep.

{
  "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
}

Bestaande clustersysteem- en gebruikersknooppuntgroepen bijwerken

Notitie

Een API-versie van 2020-03-01 of hoger moet worden gebruikt om een systeemknooppuntgroepmodus in te stellen. Clusters die zijn gemaakt op API-versies die ouder zijn dan 2020-03-01, bevatten alleen gebruikersknooppuntgroepen als gevolg hiervan. Werk de modus van bestaande knooppuntgroepen bij met de volgende opdrachten in de nieuwste Versie van Azure CLI om functionaliteit en voordelen van systeemknooppuntgroepen te ontvangen voor oudere clusters.

U kunt modi wijzigen voor zowel systeem- als gebruikersknooppuntgroepen. U kunt een systeemknooppuntgroep alleen wijzigen in een gebruikersgroep als er al een andere systeemknooppuntgroep bestaat in het AKS-cluster.

Met deze opdracht wordt een systeemknooppuntgroep gewijzigd in een gebruikersknooppuntgroep.

az aks nodepool update -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode user

Met deze opdracht wordt een gebruikersknooppuntgroep gewijzigd in een systeemknooppuntgroep.

az aks nodepool update -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode system

Een systeemknooppuntgroep verwijderen

Notitie

Als u systeemknooppuntgroepen wilt gebruiken op AKS-clusters vóór API-versie 2020-03-02, voegt u een nieuwe systeemknooppuntgroep toe en verwijdert u vervolgens de oorspronkelijke standaardknooppuntgroep.

U moet ten minste twee systeemknooppuntgroepen in uw AKS-cluster hebben voordat u er een kunt verwijderen.

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster -n mynodepool

Resources opschonen

Als u het cluster wilt verwijderen, gebruikt u de opdracht az group delete om de AKS-resourcegroep te verwijderen:

az group delete --name myResourceGroup --yes --no-wait

Volgende stappen

In dit artikel hebt u geleerd hoe u systeemknooppuntgroepen in een AKS-cluster maakt en beheert. Zie AKS-knooppuntgroepen starten en stoppen voor informatie over het starten en stoppen van AKS-knooppuntgroepen.