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.
- 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.
- Cordon de bestaande Ubuntu-knooppunten.
- De bestaande Ubuntu-knooppunten leegmaken.
- 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 uitvoeringaz 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.
- Een Kubernetes-versie van het clusterbesturingsvlak.
- 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 upgrade
vereist. 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 upgrade
vereist. 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
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
Meer informatie over systeemknooppuntgroepen.
In dit artikel hebt u geleerd hoe u meerdere knooppuntgroepen in een AKS-cluster maakt en beheert. Zie Best practices voor geavanceerde scheduler-functies in AKS voor meer informatie over het beheren van pods in knooppuntgroepen.
Zie Een Windows Server-container maken in AKS als u Windows Server-containerknooppuntgroepen wilt maken en gebruiken.
Gebruik nabijheidsplaatsingsgroepen om de latentie voor uw AKS-toepassingen te verminderen.
Gebruik openbare IP-adressen op exemplaarniveau om ervoor te zorgen dat uw knooppunten rechtstreeks verkeer kunnen verwerken.