Meerdere knooppuntgroepen maken en beheren voor een cluster in Azure Kubernetes Service (AKS)

In Azure Kubernetes Service (AKS) worden knooppunten met dezelfde configuratie gegroepeerd in knooppuntgroepen. Deze knooppuntgroepen bevatten de onderliggende VM's waarop uw toepassingen worden uitgevoerd. Het aanvankelijke aantal knooppunten en hun grootte (SKU) wordt gedefinieerd wanneer u een AKS-cluster maakt, waarmee een systeemknooppuntgroep wordt gemaakt. Ter ondersteuning van toepassingen die verschillende reken- of opslagvereisten hebben, kunt u extra gebruikersknooppuntgroepen maken. Systeemknooppuntgroepen dienen het primaire doel van het hosten van kritieke systeempods, zoals CoreDNS en konnectivity. Gebruikersknooppuntgroepen hebben het primaire doel van het hosten van uw toepassingspods. Toepassingspods kunnen echter worden gepland voor systeemknooppuntgroepen als u slechts één groep in uw AKS-cluster wilt hebben. Gebruikersknooppuntpools bevinden zich op de plaats waar u uw toepassingsspecifieke pods plaatst. Gebruik deze extra gebruikersknooppuntgroepen bijvoorbeeld om GPU's te bieden voor rekenintensieve toepassingen of toegang tot ssd-opslag met hoge prestaties.

Notitie

Met deze functie hebt u meer controle over het maken en beheren van meerdere knooppuntgroepen. Als gevolg hiervan zijn afzonderlijke opdrachten vereist voor maken/bijwerken/verwijderen. Voorheen clusterbewerkingen via az aks create of az aks update gebruikten de managedCluster-API en waren de enige opties om uw besturingsvlak en één knooppuntgroep te wijzigen. Deze functie maakt een afzonderlijke bewerkingsset beschikbaar voor agentgroepen via de agentPool-API en vereist het gebruik van de az aks nodepool opdrachtenset om bewerkingen uit te voeren op een afzonderlijke knooppuntgroep.

In dit artikel wordt beschreven hoe u meerdere knooppuntgroepen in een AKS-cluster maakt en beheert.

Voordat u begint

Azure CLI versie 2.2.0 of hoger moet zijn geïnstalleerd en geconfigureerd. Voer az --version uit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.

Beperkingen

De volgende beperkingen zijn van toepassing wanneer u AKS-clusters maakt en beheert die ondersteuning bieden voor meerdere knooppuntgroepen:

  • Zie Quota, beperkingen voor de grootte van virtuele machines en beschikbaarheid van regio's in Azure Kubernetes Service (AKS).
  • U kunt systeemknooppuntgroepen verwijderen, op voorwaarde dat u een andere systeemknooppuntgroep in het AKS-cluster moet plaatsen.
  • Systeemgroepen moeten ten minste één knooppunt bevatten en gebruikersknooppuntgroepen kunnen nul of meer knooppunten bevatten.
  • Het AKS-cluster moet de Standard SKU-load balancer gebruiken om meerdere knooppuntgroepen te gebruiken. De functie wordt niet ondersteund met Basic SKU-load balancers.
  • Het AKS-cluster moet Virtual Machine Scale Sets voor de knooppunten gebruiken.
  • U kunt de VM-grootte van een knooppuntgroep niet wijzigen nadat u deze hebt gemaakt.
  • De naam van een knooppuntgroep mag alleen kleine alfanumerieke tekens bevatten en moet beginnen met een kleine letter. Voor Linux-knooppuntgroepen moet de lengte tussen 1 en 12 tekens zijn, voor Windows-knooppuntgroepen moet de lengte tussen 1 en 6 tekens zijn.
  • Alle knooppuntgroepen moeten zich in hetzelfde virtuele netwerk bevinden.
  • Wanneer u meerdere knooppuntgroepen maakt tijdens het maken van het cluster, moeten alle Kubernetes-versies die door knooppuntgroepen worden gebruikt, overeenkomen met de versie die is ingesteld voor het besturingsvlak. Dit kan worden bijgewerkt nadat het cluster is ingericht met behulp van bewerkingen per knooppuntgroep.

Een AKS-cluster maken

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. Als één knooppunt uitvalt, raakt u resources van het besturingsvlak kwijt en wordt de redundantie aangetast. U kunt dit risico beperken door meer besturingsvlakknooppunten te hebben.

Maak eerst een AKS-cluster met één knooppuntgroep. In het volgende voorbeeld wordt de opdracht az group create gebruikt om een resourcegroep met de naam myResourceGroup te maken in de regio eastus . Een AKS-cluster met de naam myAKSCluster wordt vervolgens gemaakt met behulp van de az aks create opdracht .

Notitie

De Basic load balancer-SKU wordt niet ondersteund bij het gebruik van meerdere knooppuntgroepen. Standaard worden AKS-clusters gemaakt met de Standard load balancer-SKU vanuit de Azure CLI en Azure Portal.

# Create a resource group in East US
az group create --name myResourceGroup --location eastus

# Create a basic single-node pool AKS cluster
az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type VirtualMachineScaleSets \
    --node-count 2 \
    --generate-ssh-keys \
    --load-balancer-sku standard

Het duurt een paar minuten om het cluster te maken.

Notitie

Om ervoor te zorgen dat uw cluster betrouwbaar werkt, moet u ten minste 2 (twee) knooppunten uitvoeren in de standaardknooppuntgroep, omdat essentiële systeemservices in deze knooppuntgroep worden uitgevoerd.

Wanneer het cluster klaar is, gebruikt u de az aks get-credentials opdracht om de clusterreferenties op te halen voor gebruik met kubectl:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Een knooppuntgroep toevoegen

Het cluster dat in de vorige stap is gemaakt, heeft één knooppuntgroep. We gaan een tweede knooppuntgroep toevoegen met behulp van de az aks nodepool add opdracht . In het volgende voorbeeld wordt een knooppuntgroep met de naam mynodepool gemaakt waarop drie knooppunten worden uitgevoerd:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 3

Notitie

De naam van een knooppuntpool moet beginnen met een kleine letter en mag alleen alfanumerieke tekens bevatten. Voor Linux-knooppuntgroepen moet de lengte tussen 1 en 12 tekens zijn, voor Windows-knooppuntgroepen moet de lengte tussen 1 en 6 tekens zijn.

Als u de status van uw knooppuntgroepen wilt zien, gebruikt u de opdracht en geeft u de az aks node pool list naam van de resourcegroep en het cluster op:

az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster

In de volgende voorbeelduitvoer ziet u dat mynodepool is gemaakt met drie knooppunten in de knooppuntgroep. Toen het AKS-cluster in de vorige stap werd gemaakt, is een standaardknooppuntpool1 gemaakt met een aantal knooppunten van 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",
    ...
  }
]

Tip

Als er geen VmSize is opgegeven wanneer u een knooppuntgroep toevoegt, is de standaardgrootte Standard_D2s_v3 voor Windows-knooppuntgroepen en Standard_DS2_v2 voor Linux-knooppuntgroepen. Als er geen OrchestratorVersion is opgegeven, wordt standaard dezelfde versie als het besturingsvlak gebruikt.

Een ARM64-knooppuntgroep toevoegen

De ARM64-processor biedt rekenkracht voor uw Kubernetes-workloads. Als u een ARM64-knooppuntgroep wilt maken, moet u een virtuele machine uit de Dpsv5-, Dplsv5 - of Epsv5-serie kiezen.

Beperkingen

  • ARM64-knooppuntgroepen worden niet ondersteund op clusters met Defender
  • FIPS-knooppuntgroepen worden niet ondersteund met ARM64-SKU's

Gebruik az aks nodepool add de opdracht om een ARM64-knooppuntgroep toe te voegen.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name armpool \
    --node-count 3 \
    --node-vm-size Standard_D2pds_v5

Een Mariner-knooppuntgroep toevoegen

Mariner is een opensource Linux-distributie die beschikbaar is als AKS-containerhost. Het biedt hoge betrouwbaarheid, beveiliging en consistentie. Mariner bevat alleen de minimale set pakketten die nodig zijn voor het uitvoeren van containerworkloads, waardoor de opstarttijden en de algehele prestaties worden verbeterd.

U kunt een Mariner-knooppuntgroep toevoegen aan uw bestaande cluster met behulp van de az aks nodepool add opdracht en opgeven --os-sku mariner.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name marinerpool \
    --os-sku mariner

Ubuntu-knooppunten migreren naar Mariner

Gebruik de volgende instructies om uw Ubuntu-knooppunten te migreren naar Mariner-knooppunten.

  1. Voeg een Mariner-knooppuntgroep toe aan uw bestaande cluster met behulp van de az aks nodepool add opdracht en geef op --os-sku mariner.

Notitie

Wanneer u een nieuwe Mariner-knooppuntgroep toevoegt, moet u er ten minste één toevoegen als --mode System. Anders staat AKS niet toe dat u uw bestaande Ubuntu-knooppuntgroep verwijdert.

  1. Cordon de bestaande Ubuntu-knooppunten.
  2. De bestaande Ubuntu-knooppunten leegmaken.
  3. Verwijder de bestaande Ubuntu-knooppunten met behulp van de az aks delete opdracht .
az aks nodepool delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool

Een knooppuntgroep met een uniek subnet toevoegen

Voor een workload moeten de knooppunten van een cluster mogelijk worden gesplitst in afzonderlijke pools voor logische isolatie. Deze isolatie kan worden ondersteund met afzonderlijke subnetten die zijn toegewezen aan elke knooppuntgroep in het cluster. Dit kan voldoen aan vereisten zoals het hebben van niet-aaneengesloten adresruimte voor het virtuele netwerk om te splitsen over knooppuntgroepen.

Notitie

Zorg ervoor dat u azure CLI-versie 2.35.0 of hoger gebruikt.

Beperkingen

  • Alle subnetten die zijn toegewezen aan knooppuntgroepen, moeten deel uitmaken van hetzelfde virtuele netwerk.
  • Systeempods moeten toegang hebben tot alle knooppunten/pods in het cluster om kritieke functionaliteit te bieden, zoals DNS-resolutie en tunneling van kubectl logs/exec/port-forward proxy.
  • Als u uw VNET uitvouwt nadat u het cluster hebt gemaakt, moet u het cluster bijwerken (een bewerking voor een beheerd cluster uitvoeren, maar bewerkingen van knooppuntgroepen tellen niet mee) voordat u een subnet buiten het oorspronkelijke CIDR-blok toevoegt. AKS krijgt nu een foutmelding in de agentgroep die is toegevoegd, hoewel we dit oorspronkelijk hebben toegestaan. De aks-preview Azure CLI-extensie (versie 0.5.66+) ondersteunt nu uitvoering az aks update -g <resourceGroup> -n <clusterName> zonder optionele argumenten. Met deze opdracht wordt een updatebewerking uitgevoerd zonder wijzigingen aan te brengen, waardoor een cluster kan worden hersteld dat is vastgelopen in een mislukte status.
  • In clusters met Kubernetes versie < 1.23.3 voert kube-proxy SNAT-verkeer uit vanaf nieuwe subnetten, waardoor Azure Network Policy de pakketten kan verwijderen.
  • Windows-knooppunten voeren SNAT-verkeer naar de nieuwe subnetten totdat de installatiekopie van de knooppuntgroep opnieuw wordt ingesteld.
  • Interne load balancers zijn standaard ingesteld op een van de subnetten van de knooppuntgroep (meestal het eerste subnet van de knooppuntgroep bij het maken van het cluster). Als u dit gedrag wilt overschrijven, kunt u het subnet van de load balancer expliciet opgeven met behulp van een aantekening.

Als u een knooppuntgroep met een toegewezen subnet wilt maken, geeft u de resource-id van het subnet door als een extra parameter bij het maken van een knooppuntgroep.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 3 \
    --vnet-subnet-id <YOUR_SUBNET_RESOURCE_ID>

Een knooppuntgroep upgraden

Notitie

Upgrade- en schaalbewerkingen in een cluster of knooppuntgroep kunnen niet tegelijkertijd worden uitgevoerd als er een fout wordt geretourneerd. In plaats daarvan moet elk bewerkingstype voor de doelresource worden voltooid voordat de volgende aanvraag voor dezelfde resource wordt uitgevoerd. Meer informatie hierover vindt u in onze gids voor probleemoplossing.

In de opdrachten in deze sectie wordt uitgelegd hoe u een upgrade uitvoert voor één specifieke knooppuntgroep. De relatie tussen het upgraden van de Kubernetes-versie van het besturingsvlak en de knooppuntgroep wordt uitgelegd in de onderstaande sectie.

Notitie

De versie van de installatiekopieën van het besturingssysteem van de knooppuntgroep is gekoppeld aan de Kubernetes-versie van het cluster. U krijgt alleen upgrades van de installatiekopieën van het besturingssysteem, na een clusterupgrade.

Omdat er in dit voorbeeld twee knooppuntgroepen zijn, moeten we gebruiken az aks nodepool upgrade om een knooppuntgroep bij te werken. Als u de beschikbare upgrades wilt bekijken, gebruikt u az aks get-upgrades

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster

We gaan de mynodepool upgraden. Gebruik de az aks nodepool upgrade opdracht om de knooppuntgroep bij te werken, zoals wordt weergegeven in het volgende voorbeeld:

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --kubernetes-version KUBERNETES_VERSION \
    --no-wait

Geef de status van uw knooppuntgroepen opnieuw weer met behulp van de az aks node pool list opdracht . In het volgende voorbeeld ziet u dat mynodepool de status Upgraden naar KUBERNETES_VERSION heeft:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 3,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "KUBERNETES_VERSION",
    ...
    "provisioningState": "Upgrading",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Het duurt enkele minuten om de knooppunten bij te werken naar de opgegeven versie.

Als best practice moet u alle knooppuntgroepen in een AKS-cluster upgraden naar dezelfde Kubernetes-versie. Het standaardgedrag van az aks upgrade is om alle knooppuntgroepen samen met het besturingsvlak te upgraden om deze uitlijning te bereiken. Met de mogelijkheid om afzonderlijke knooppuntgroepen te upgraden, kunt u een rolling upgrade uitvoeren en pods tussen knooppuntgroepen plannen om de uptime van toepassingen te behouden binnen de bovenstaande beperkingen.

Een clusterbesturingsvlak upgraden met meerdere knooppuntgroepen

Notitie

Kubernetes maakt gebruik van het standaardversiebeheerschema voor Semantic Versioning . Het versienummer wordt uitgedrukt als x.y.z, waarbij x de primaire versie is, y de secundaire versie en z de patchversie is. In versie 1.12.6 is 1 bijvoorbeeld de primaire versie, 12 de secundaire versie en 6 de patchversie. De Kubernetes-versie van het besturingsvlak en de initiële knooppuntgroep worden ingesteld tijdens het maken van het cluster. Voor alle extra knooppuntgroepen is de Kubernetes-versie ingesteld wanneer ze aan het cluster worden toegevoegd. De Kubernetes-versies kunnen verschillen tussen knooppuntgroepen en tussen een knooppuntgroep en het besturingsvlak.

Een AKS-cluster heeft twee clusterresourceobjecten waaraan Kubernetes-versies zijn gekoppeld.

  1. Een Kubernetes-versie van het clusterbesturingsvlak.
  2. Een knooppuntgroep met een Kubernetes-versie.

Een besturingsvlak wordt toegewezen aan een of meer knooppuntgroepen. Het gedrag van een upgradebewerking is afhankelijk van welke Azure CLI-opdracht wordt gebruikt.

Voor het upgraden van een AKS-besturingsvlak is het gebruik van az aks upgradevereist. Met deze opdracht wordt de versie van het besturingsvlak en alle knooppuntgroepen in het cluster bijgewerkt.

Als u de az aks upgrade opdracht met de --control-plane-only vlag geeft, wordt alleen het clusterbesturingsvlak bijgewerkt. Geen van de gekoppelde knooppuntgroepen in het cluster wordt gewijzigd.

Voor het upgraden van afzonderlijke knooppuntgroepen is het gebruik van az aks nodepool upgradevereist. Met deze opdracht wordt alleen de doelknooppuntgroep bijgewerkt met de opgegeven Kubernetes-versie

Validatieregels voor upgrades

De geldige Kubernetes-upgrades voor het besturingsvlak en de knooppuntgroepen van een cluster worden gevalideerd door de volgende sets regels.

  • Regels voor geldige versies voor het upgraden van knooppuntgroepen:

    • De versie van de knooppuntgroep moet dezelfde primaire versie hebben als het besturingsvlak.
    • De secundaire versie van de knooppuntgroep moet binnen twee secundaire versies van de versie van het besturingsvlak vallen.
    • De versie van de knooppuntgroep kan niet groter zijn dan de versie van het besturingselement major.minor.patch .
  • Regels voor het verzenden van een upgradebewerking:

    • U kunt het besturingsvlak of een Kubernetes-versie van een knooppuntgroep niet downgraden.
    • Als er geen Kubernetes-versie van een knooppuntgroep is opgegeven, is het gedrag afhankelijk van de gebruikte client. Declaratie in Resource Manager sjablonen terugvalt op de bestaande versie die is gedefinieerd voor de knooppuntgroep als deze wordt gebruikt, als er geen is ingesteld, wordt de versie van het besturingsvlak gebruikt om op terug te vallen.
    • U kunt een besturingsvlak of een knooppuntgroep op een bepaald moment upgraden of schalen. U kunt niet meerdere bewerkingen tegelijk verzenden op één besturingsvlak of knooppuntgroepresource.

Een knooppuntgroep handmatig schalen

Naarmate de workloadvereisten voor uw toepassing veranderen, moet u mogelijk het aantal knooppunten in een knooppuntgroep schalen. Het aantal knooppunten kan omhoog of omlaag worden geschaald.

Gebruik az aks node pool scale de opdracht om het aantal knooppunten in een knooppuntgroep te schalen. In het volgende voorbeeld wordt het aantal knooppunten in mynodepool geschaald naar 5:

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 5 \
    --no-wait

Geef de status van uw knooppuntgroepen opnieuw weer met behulp van de az aks node pool list opdracht . In het volgende voorbeeld ziet u dat mynodepool de status Schalen heeft met een nieuw aantal van 5 knooppunten:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 5,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Scaling",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Het duurt enkele minuten voordat de schaalbewerking is voltooid.

Een specifieke knooppuntgroep automatisch schalen door automatische schaalaanpassing van clusters in te schakelen

AKS biedt een afzonderlijke functie voor het automatisch schalen van knooppuntgroepen met een functie die de automatische schaalaanpassing van clusters wordt genoemd. Deze functie kan per knooppuntgroep worden ingeschakeld met unieke minimum- en maximumaantallen per knooppuntgroep. Meer informatie over het gebruik van de automatische schaalaanpassing van clusters per knooppuntgroep.

Een knooppuntgroep verwijderen

Als u een pool niet meer nodig hebt, kunt u deze verwijderen en de onderliggende VM-knooppunten verwijderen. Als u een knooppuntgroep wilt verwijderen, gebruikt u de az aks node pool delete opdracht en geeft u de naam van de knooppuntgroep op. In het volgende voorbeeld wordt de mynodepool verwijderd die in de vorige stappen is gemaakt:

Waarschuwing

Wanneer u een knooppuntgroep verwijdert, voert AKS geen cordon en drain uit en zijn er geen herstelopties voor gegevensverlies die kunnen optreden wanneer u een knooppuntgroep verwijdert. Als pods niet kunnen worden gepland in andere knooppuntgroepen, zijn deze toepassingen niet meer beschikbaar. Zorg ervoor dat u een knooppuntgroep niet verwijdert wanneer toepassingen in gebruik geen gegevensback-ups hebben of de mogelijkheid hebben om uit te voeren op andere knooppuntgroepen in uw cluster. Als u de onderbreking van het opnieuw ordenen van pods die momenteel worden uitgevoerd in de knooppuntgroep die u gaat verwijderen, wilt minimaliseren, voert u een cordon uit en voert u alle knooppunten in de knooppuntgroep af voordat u deze verwijdert. Zie cordon- en drain-knooppuntgroepen voor meer informatie.

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name mynodepool --no-wait

In de volgende voorbeelduitvoer van de az aks node pool list opdracht ziet u dat mynodepool de status Verwijderen heeft:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 5,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Deleting",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Het duurt enkele minuten om de knooppunten en de knooppuntgroep te verwijderen.

Capaciteitsreserveringsgroepen koppelen aan knooppuntgroepen (preview)

Belangrijk

AKS-preview-functies zijn beschikbaar op basis van selfservice, opt-in. Previews worden geleverd 'in de staat waarin' en 'zoals beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:

Naarmate uw toepassingsworkloads vereisen, kunt u knooppuntgroepen koppelen aan capaciteitsreserveringsgroepen die eerder zijn gemaakt. Dit zorgt ervoor dat gegarandeerde capaciteit wordt toegewezen aan uw knooppuntgroepen.

Raadpleeg Capaciteitsreserveringsgroepen voor meer informatie over de capaciteitsreserveringsgroepen.

U kunt een knooppuntgroep koppelen aan een bestaande capaciteitsreserveringsgroep met behulp van az aks nodepool add de opdracht en een capaciteitsreserveringsgroep opgeven met de vlag --capacityReservationGroup" De capaciteitsreserveringsgroep moet al bestaan, anders wordt de knooppuntgroep aan het cluster toegevoegd met een waarschuwing en wordt er geen capaciteitsreserveringsgroep gekoppeld.

az aks nodepool add -g MyRG --cluster-name MyMC -n myAP --capacityReservationGroup myCRG

U kunt een systeemknooppuntgroep koppelen aan een bestaande capaciteitsreserveringsgroep met behulp van az aks create de opdracht . Als de opgegeven capaciteitsreserveringsgroep niet bestaat, wordt er een waarschuwing gegeven en wordt het cluster gemaakt zonder koppeling van een capaciteitsreserveringsgroep.

az aks create -g MyRG --cluster-name MyMC --capacityReservationGroup myCRG

Als u een opdracht voor een knooppuntgroep verwijdert, wordt een knooppuntgroep impliciet losgekoppeld van een gekoppelde capaciteitsreserveringsgroep, voordat die knooppuntgroep wordt verwijderd.

az aks nodepool delete -g MyRG --cluster-name MyMC -n myAP

Als u een clusteropdracht verwijdert, worden alle knooppuntgroepen in een cluster impliciet losgekoppeld van de bijbehorende capaciteitsreserveringsgroepen.

az aks delete -g MyRG --cluster-name MyMC

Een VM-grootte opgeven voor een knooppuntgroep

In de vorige voorbeelden voor het maken van een knooppuntgroep is een standaard-VM-grootte gebruikt voor de knooppunten die in het cluster zijn gemaakt. Een veelvoorkomender scenario is dat u knooppuntgroepen maakt met verschillende VM-grootten en mogelijkheden. U kunt bijvoorbeeld een knooppuntgroep maken die knooppunten met grote hoeveelheden CPU of geheugen bevat, of een knooppuntgroep die GPU-ondersteuning biedt. In de volgende stap gebruikt u taints en toleranties om de Kubernetes-scheduler te vertellen hoe de toegang kan worden beperkt tot pods die op deze knooppunten kunnen worden uitgevoerd.

In het volgende voorbeeld maakt u een GPU-knooppuntgroep die gebruikmaakt van de Standard_NC6 VM-grootte. Deze VM's worden aangedreven door de NVIDIA Tesla K80-kaart. Zie Grootten voor virtuele Linux-machines in Azure voor informatie over beschikbare VM-grootten.

Maak opnieuw een knooppuntgroep met behulp van de az aks node pool add opdracht . Geef deze keer de naam gpunodepool op en gebruik de --node-vm-size parameter om de Standard_NC6 grootte op te geven:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunodepool \
    --node-count 1 \
    --node-vm-size Standard_NC6 \
    --no-wait

In de volgende voorbeelduitvoer van de az aks node pool list opdracht ziet u dat gpunodepoolHet maken van knooppunten met de opgegeven VmSize is:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 1,
    ...
    "name": "gpunodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "vmSize": "Standard_NC6",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Het duurt enkele minuten voordat de gpunodepool is gemaakt.

Een taint, label of tag opgeven voor een knooppuntgroep

Wanneer u een knooppuntgroep maakt, kunt u taints, labels of tags toevoegen aan die knooppuntgroep. Wanneer u een taint, label of tag toevoegt, krijgen alle knooppunten in die knooppuntgroep ook die taint, label of tag.

Belangrijk

Het toevoegen van taints, labels of tags aan knooppunten moet worden uitgevoerd voor de hele knooppuntgroep met behulp van az aks nodepool. Het wordt afgeraden taints, labels of tags toe te passen op afzonderlijke knooppunten in een knooppuntgroep kubectl .

Taints van knooppuntgroep instellen

Als u een knooppuntgroep met een taint wilt maken, gebruikt u az aks nodepool add. Geef de naam taintnp op en gebruik de --node-taints parameter om sku=gpu:NoSchedule op te geven voor de taint.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name taintnp \
    --node-count 1 \
    --node-taints sku=gpu:NoSchedule \
    --no-wait

In de volgende voorbeelduitvoer van de az aks nodepool list opdracht ziet u dat taintnpHet maken van knooppunten met de opgegeven nodeTaints is:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 1,
    ...
    "name": "taintnp",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "nodeTaints":  [
      "sku=gpu:NoSchedule"
    ],
    ...
  },
 ...
]

De taint-informatie is zichtbaar in Kubernetes voor het afhandelen van planningsregels voor knooppunten. De Kubernetes-planner kan taints en toleranties gebruiken om te beperken welke workloads op knooppunten kunnen worden uitgevoerd.

  • Er wordt een taint toegepast op een knooppunt dat aangeeft dat alleen specifieke pods kunnen worden gepland.
  • Vervolgens wordt een tolerantie toegepast op een pod waarmee ze de taint van een knooppunt kunnen tolereren .

Zie Aanbevolen procedures voor geavanceerde scheduler-functies in AKS voor meer informatie over het gebruik van geavanceerde geplande kubernetes-functies

In de vorige stap hebt u de taint sku=gpu:NoSchedule toegepast bij het maken van uw knooppuntgroep. In het volgende eenvoudige YAML-manifest wordt een tolerantie gebruikt om de Kubernetes-planner toe te staan een NGINX-pod uit te voeren op een knooppunt in die knooppuntgroep.

Maak een bestand met de naam nginx-toleration.yaml en kopieer in het volgende yamL-voorbeeld:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
    name: mypod
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 1
        memory: 2G
  tolerations:
  - key: "sku"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

Plan de pod met behulp van de kubectl apply -f nginx-toleration.yaml opdracht :

kubectl apply -f nginx-toleration.yaml

Het duurt enkele seconden om de pod te plannen en de NGINX-installatiekopie op te halen. Gebruik de opdracht kubectl describe pod om de podstatus weer te geven. In de volgende verkorte voorbeelduitvoer ziet u dat de tolerantie sku=gpu:NoSchedule is toegepast. In de sectie gebeurtenissen heeft de planner de pod toegewezen aan het knooppunt aks-taintnp-28993262-vmss0000000 :

kubectl describe pod mypod
[...]
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
                 sku=gpu:NoSchedule
Events:
  Type    Reason     Age    From                Message
  ----    ------     ----   ----                -------
  Normal  Scheduled  4m48s  default-scheduler   Successfully assigned default/mypod to aks-taintnp-28993262-vmss000000
  Normal  Pulling    4m47s  kubelet             pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
  Normal  Pulled     4m43s  kubelet             Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
  Normal  Created    4m40s  kubelet             Created container
  Normal  Started    4m40s  kubelet             Started container

Alleen pods waarop deze tolerantie is toegepast, kunnen worden gepland op knooppunten in taintnp. Elke andere pod wordt gepland in de knooppuntgroep nodepool1 . Als u extra knooppuntgroepen maakt, kunt u extra taints en toleranties gebruiken om te beperken welke pods kunnen worden gepland voor deze knooppuntresources.

Knooppuntgroeplabels instellen

Zie Labels gebruiken in een AKS-cluster (Azure Kubernetes Service) voor meer informatie over het gebruik van labels met knooppuntgroepen.

Azure-tags voor knooppuntgroepen instellen

Zie Azure-tags gebruiken in Azure Kubernetes Service (AKS) voor meer informatie over het gebruik van Azure-tags met knooppuntgroepen.

Een FIPS-knooppuntgroep toevoegen

Zie Federal Information Process Standard (FIPS) inschakelen voor Azure Kubernetes Service AKS-knooppuntgroepen (Federal Information Process Standard) voor meer informatie over het inschakelen van FIPS (Federal Information Process Standard) voor uw AKS-cluster.

Knooppuntgroepen beheren met behulp van een Resource Manager-sjabloon

Wanneer u een Azure Resource Manager-sjabloon gebruikt om resources te maken en te beheren, kunt u doorgaans de instellingen in uw sjabloon bijwerken en de resource opnieuw implementeren. Met knooppuntgroepen in AKS kan het profiel van de eerste knooppuntgroep niet worden bijgewerkt nadat het AKS-cluster is gemaakt. Dit gedrag betekent dat u een bestaande Resource Manager sjabloon niet kunt bijwerken, geen wijziging kunt aanbrengen in de knooppuntgroepen en niet opnieuw kunt implementeren. In plaats daarvan moet u een afzonderlijke Resource Manager sjabloon maken waarmee alleen de knooppuntgroepen voor een bestaand AKS-cluster worden bijgewerkt.

Maak een sjabloon zoals aks-agentpools.json en plak het volgende voorbeeldmanifest. Met deze voorbeeldsjabloon worden de volgende instellingen geconfigureerd:

  • Updates de Linux-knooppuntgroep met de naam myagentpool om drie knooppunten uit te voeren.
  • Hiermee stelt u de knooppunten in de knooppuntgroep in om Kubernetes versie 1.15.7 uit te voeren.
  • Definieert de knooppuntgrootte als Standard_DS2_v2.

Bewerk deze waarden indien nodig om knooppuntgroepen bij te werken, toe te voegen of te verwijderen:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "clusterName": {
            "type": "string",
            "metadata": {
                "description": "The name of your existing AKS cluster."
            }
        },
        "location": {
            "type": "string",
            "metadata": {
                "description": "The location of your existing AKS cluster."
            }
        },
        "agentPoolName": {
            "type": "string",
            "defaultValue": "myagentpool",
            "metadata": {
                "description": "The name of the agent pool to create or update."
            }
        },
        "vnetSubnetId": {
            "type": "string",
            "defaultValue": "",
            "metadata": {
                "description": "The Vnet subnet resource ID for your existing AKS cluster."
            }
        }
    },
    "variables": {
        "apiVersion": {
            "aks": "2020-01-01"
        },
        "agentPoolProfiles": {
            "maxPods": 30,
            "osDiskSizeGB": 0,
            "agentCount": 3,
            "agentVmSize": "Standard_DS2_v2",
            "osType": "Linux",
            "vnetSubnetId": "[parameters('vnetSubnetId')]"
        }
    },
    "resources": [
        {
            "apiVersion": "2020-01-01",
            "type": "Microsoft.ContainerService/managedClusters/agentPools",
            "name": "[concat(parameters('clusterName'),'/', parameters('agentPoolName'))]",
            "location": "[parameters('location')]",
            "properties": {
                "maxPods": "[variables('agentPoolProfiles').maxPods]",
                "osDiskSizeGB": "[variables('agentPoolProfiles').osDiskSizeGB]",
                "count": "[variables('agentPoolProfiles').agentCount]",
                "vmSize": "[variables('agentPoolProfiles').agentVmSize]",
                "osType": "[variables('agentPoolProfiles').osType]",
                "storageProfile": "ManagedDisks",
                "type": "VirtualMachineScaleSets",
                "vnetSubnetID": "[variables('agentPoolProfiles').vnetSubnetId]",
                "orchestratorVersion": "1.15.7"
            }
        }
    ]
}

Implementeer deze sjabloon met behulp van de az deployment group create opdracht, zoals wordt weergegeven in het volgende voorbeeld. U wordt gevraagd om de naam en locatie van het bestaande AKS-cluster:

az deployment group create \
    --resource-group myResourceGroup \
    --template-file aks-agentpools.json

Tip

U kunt een tag toevoegen aan uw knooppuntgroep door de eigenschap tag toe te voegen in de sjabloon, zoals wordt weergegeven in het volgende voorbeeld.

...
"resources": [
{
  ...
  "properties": {
    ...
    "tags": {
      "name1": "val1"
    },
    ...
  }
}
...

Het bijwerken van uw AKS-cluster kan enkele minuten duren, afhankelijk van de instellingen en bewerkingen van de knooppuntgroep die u definieert in uw Resource Manager sjabloon.

Resources opschonen

In dit artikel hebt u een AKS-cluster gemaakt dat GPU-knooppunten bevat. Als u onnodige kosten wilt verminderen, kunt u de gpunodepool of het hele AKS-cluster verwijderen.

Als u de GPU-knooppuntgroep wilt verwijderen, gebruikt u de az aks nodepool delete opdracht zoals weergegeven in het volgende voorbeeld:

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name gpunodepool

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

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

U kunt ook het extra cluster verwijderen dat u hebt gemaakt voor het scenario met het openbare IP-adres voor knooppuntgroepen.

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

Volgende stappen