Oefening: meerdere knooppunten configureren en schalen naar nul inschakelen op een AKS-cluster
Met Azure Kubernetes Service kunt u verschillende knooppuntgroepen maken om specifieke workloads te koppelen aan de knooppunten die in elke knooppuntgroep worden uitgevoerd.
Terugkomend op het drone-volgvoorbeeld, heeft uw team een nieuwe voorspellende modelleringsservice ontwikkeld die vluchtpadinformatie in extreme weersomstandigheden verwerkt en optimale vluchtroutes creëert. Deze service vereist ondersteuning voor virtuele machines (VM's) op basis van GPU en wordt alleen uitgevoerd op specifieke dagen in de week. Het team wil ervoor zorgen dat er geen VMS wordt gebruikt wanneer de service niet wordt uitgevoerd.
Hier maakt u een door Azure Kubernetes Service (AKS) beheerd Kubernetes-cluster. Vervolgens configureert u het cluster om meerdere knooppuntgroepen te ondersteunen en stelt u clusters in staat de knooppunten binnen de knooppuntgroepen te schalen. Vervolgens voegt u een tweede knooppuntgroep toe ter ondersteuning van gebruikersworkloads met een dynamisch aantal knooppunten. Ten slotte schaalt u het aantal knooppunten naar nul om de kosten te verlagen van de knooppunten die in uw AKS-cluster worden gebruikt.
Een nieuwe resourcegroep maken
Meld u aan bij Azure Cloud Shell met uw Azure-account. Selecteer de Bash-versie van Cloud Shell.
U gebruikt de waarden die u hier maakt, opnieuw in alle oefeningen in deze module. Sla de uitvoer op voor toekomstig gebruik.
Kies een regio om uw resourcegroep te hosten. Functies van latere oefeningen zijn niet beschikbaar in alle regio's. Daarom raden we u aan om eastus als uw regio te gebruiken. Als u ervoor kiest om een andere waarde te gebruiken, wijzigt u de waarde van
REGION_NAME
.Voer de volgende opdrachten uit om uw variabelen te registreren:
REGION_NAME=eastus RESOURCE_GROUP=rg-akscostsaving AKS_CLUSTER_NAME=akscostsaving-$RANDOM
Tip
U kunt de knop Kopiëren gebruiken om opdrachten naar het klembord te kopiëren. Als u wilt plakken, klikt u met de rechtermuisknop op een nieuwe regel in de Cloud Shell-terminal en selecteert u Plakkenof gebruikt u de sneltoets Shift+Insert (⌘+V in macOS).
U kunt elke waarde controleren door de opdracht
echo
uit te voeren; bijvoorbeeldecho $REGION_NAME
.Noteer uw
AKS_CLUSTER_NAME
. Tijdens de oefeningen gebruikt u deze waarde later voor het opschonen en configureren van uw cluster.echo $AKS_CLUSTER_NAME
Maak een nieuwe resourcegroep met de naam rg-akscostsaving. U implementeert alle resources die u in deze oefeningen in deze resourcegroep maakt. Met één resourcegroep kunt u de resources gemakkelijker opschonen nadat u de module hebt voltooid.
az group create \ --name $RESOURCE_GROUP \ --location $REGION_NAME
Het AKS-cluster maken
Zodra de resourcegroep is aangemaakt, kunt u AKS-clusters binnen de groep maken. De eerste stap is het ophalen van de Kubernetes-versie in uw geselecteerde regio. Deze versie is ingesteld om uw cluster te configureren.
Voer de opdracht
az aks get-versions
uit om de Kubernetes-versie op te halen. De volgende query retourneert een niet-preview Kubernetes-versie. Sla die waarde op in een Bash-variabele met de naamVERSION
. Voer de volgende opdracht uit om het versienummer op te halen en op te slaan:VERSION=$(az aks get-versions \ --location $REGION_NAME \ --query "values[?isPreview==null].version | [-1]" \ --output tsv) echo $VERSION
Voer de opdracht
az aks create
uit om het AKS-cluster te maken. Het cluster wordt uitgevoerd met twee knooppunten in de systeemknooppuntgroep. Het kan enkele minuten duren voordat deze opdracht is voltooid.az aks create \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --location $REGION_NAME \ --kubernetes-version $VERSION \ --node-count 2 \ --load-balancer-sku standard \ --vm-set-type VirtualMachineScaleSets \ --generate-ssh-keys
De opdracht
az aks create
heeft verschillende parameters waarmee een nauwkeurige configuratie van uw Kubernetes-cluster mogelijk is. Er zijn twee belangrijke parameters voor het configureren van de juiste ondersteuning in uw cluster voor schalen en meerdere knooppuntgroepen:Parameter en waarde Beschrijving --load-balancer-sku standard
De standaardondersteuning voor load balancer in AKS is basic
. Debasic
load balancer wordt niet ondersteund wanneer u meerdere knooppuntgroepen gebruikt. Stel de waarde in opstandard
.--vm-set-type VirtualMachineScaleSets
Als u de schaalfuncties in AKS wilt gebruiken, zijn schaalsets voor virtuele machines vereist. Met deze parameter wordt ondersteuning voor schaalsets ingeschakeld. U ziet dat twee knooppunten zijn geconfigureerd in de standaardknooppuntgroep met behulp van de parameter
--node-count 2
. Zoals eerder beschreven, worden essentiële systeemservices uitgevoerd in deze systeemknooppuntgroep. Het is belangrijk dat productieclusters ten minste--node-count 3
gebruiken voor betrouwbaarheid in clusterbewerkingen. We gebruiken hier slechts twee knooppunten voor kostenoverwegingen in deze oefening.Voer de opdracht
az aks nodepool list
uit om de knooppuntgroepen in het nieuwe cluster weer te geven:az aks nodepool list --resource-group $RESOURCE_GROUP --cluster-name $AKS_CLUSTER_NAME
Hier volgt een voorbeeld van de uitvoer van de opdracht:
[ { "agentPoolType": "VirtualMachineScaleSets", "availabilityZones": null, "count": 2, "enableAutoScaling": null, "enableNodePublicIp": false, "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/rg-akscostsaving/providers/Microsoft.ContainerService/managedClusters/akscostsaving-17835/agentPools/nodepool1", "mode": "System", "name": "nodepool1", ... "type": "Microsoft.ContainerService/managedClusters/agentPools", "upgradeSettings": null, "vmSize": "Standard_DS2_v2", "vnetSubnetId": null } ]
U ziet dat de
mode
van de knooppuntgroep is ingesteld opSystem
en dat dename
automatisch wordt toegewezen.
Een knooppuntgroep toevoegen
Uw cluster heeft één knooppuntgroep. Voeg een tweede knooppuntgroep toe door de opdracht
az aks nodepool add
uit te voeren. Voer de opdracht in deze stap uit om een gebruikersknooppuntgroep met drie knooppunten en de naambatchprocpl
te maken. Houd er rekening mee dat namen van knooppuntgroepen moeten beginnen met een kleine letter en alleen alfanumerieke tekens moeten bevatten. Namen van knooppuntgroepen zijn beperkt tot 12 tekens voor Linux-knooppuntgroepen en zes tekens voor Windows-knooppuntgroepen.Voer de volgende opdracht uit:
az aks nodepool add \ --resource-group $RESOURCE_GROUP \ --cluster-name $AKS_CLUSTER_NAME \ --name batchprocpl \ --node-count 2
Voer de opdracht
az aks nodepool list
uit om de nieuwe knooppuntgroep in uw nieuwe cluster weer te geven:az aks nodepool list --resource-group $RESOURCE_GROUP --cluster-name $AKS_CLUSTER_NAME
Hier volgt een voorbeeld van de uitvoer van de opdracht:
[ { "agentPoolType": "VirtualMachineScaleSets", "availabilityZones": null, "count": 2, "enableAutoScaling": null, "enableNodePublicIp": false, "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/rg-akscostsaving/providers/Microsoft.ContainerService/managedClusters/akscostsaving-17835/agentPools/batchprocpl", "mode": "User", "name": "batchprocpl", ... "type": "Microsoft.ContainerService/managedClusters/agentPools", "upgradeSettings": { "maxSurge": null }, "vmSize": "Standard_DS2_v2", "vnetSubnetId": null }, { "agentPoolType": "VirtualMachineScaleSets", "availabilityZones": null, "count": 2, "enableAutoScaling": null, "enableNodePublicIp": false, "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/rg-akscostsaving/providers/Microsoft.ContainerService/managedClusters/akscostsaving-17835/agentPools/nodepool1", "mode": "System", "name": "nodepool1", ... "type": "Microsoft.ContainerService/managedClusters/agentPools", "upgradeSettings": null, "vmSize": "Standard_DS2_v2", "vnetSubnetId": null } ]
U ziet dat de
mode
van de nieuwe knooppuntgroep is ingesteld opUser
en dat dename
isbatchprocpl
.
Het aantal knooppunten van de knooppuntgroep schalen naar nul
Voer de opdracht az aks nodepool scale
uit om knooppunten in een knooppuntgroep handmatig te schalen.
Voer de opdracht az aks nodepool scale
uit en gebruik de parameter --node-count
om de waarde voor het aantal knooppunten in te stellen op 0.
Hier volgt een voorbeeld van de opdracht:
az aks nodepool scale \
--resource-group $RESOURCE_GROUP \
--cluster-name $AKS_CLUSTER_NAME \
--name batchprocpl \
--node-count 0
Hier volgt een voorbeeld van de uitvoer van de opdracht:
{
"agentPoolType": "VirtualMachineScaleSets",
"availabilityZones": null,
"count": 0,
"enableAutoScaling": null,
"enableNodePublicIp": false,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/rg-akscostsaving/providers/Microsoft.ContainerService/managedClusters/akscostsaving-17835/agentPools/batchprocpl",
"maxCount": null,
"maxPods": 110,
"minCount": null,
"mode": "User",
"name": "batchprocpl",
"nodeImageVersion": "AKSUbuntu-1604-2020.06.10",
"nodeLabels": null,
"nodeTaints": null,
"orchestratorVersion": "1.17.9",
"osDiskSizeGb": 128,
"osType": "Linux",
"provisioningState": "Succeeded",
"proximityPlacementGroupId": null,
"resourceGroup": "rg-akscostsaving",
"scaleSetEvictionPolicy": null,
"scaleSetPriority": null,
"spotMaxPrice": null,
"tags": null,
"type": "Microsoft.ContainerService/managedClusters/agentPools",
"upgradeSettings": {
"maxSurge": null
},
"vmSize": "Standard_DS2_v2",
"vnetSubnetId": null
}
U ziet dat de knooppuntgroep count
parameterwaarde is ingesteld op 0 en dat de enableAutoScaling
waarde is ingesteld op null
. Als u workloads wilt plannen, moet u het aantal knooppunten voor deze knooppuntgroep handmatig verhogen, omdat het maken van knooppunten niet standaard wordt uitgevoerd.
De Kubernetes-context configureren
In de uitvoer van de vorige opdracht is het aantal knooppuntgroepen ingesteld op 0. U kunt de beschikbare knooppunten in het cluster bevestigen door de opdracht kubectl get nodes
uit te voeren.
Voer
kubectl
uit om te communiceren met de API-server van uw cluster. U moet een Kubernetes-clustercontext configureren omkubectl
verbinding te laten maken. De context bevat het adres van het cluster, een gebruiker en een naamruimte. Voer de opdrachtaz aks get-credentials
uit om de Kubernetes-context in Cloud Shell te configureren.Haal de clusterreferenties op door deze opdracht uit te voeren:
az aks get-credentials \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME
Hier volgt een voorbeeld van de uitvoer van de opdracht.
Merged "akscostsaving-17835" as current context in /home/user/.kube/config
Vermeld de knooppunten in uw knooppuntgroepen.
kubectl get nodes
Hier volgt een voorbeeld van de uitvoer van de opdracht:
NAME STATUS ROLES AGE VERSION aks-nodepool1-37990379-vmss000000 Ready agent 32m v1.17.9 aks-nodepool1-37990379-vmss000001 Ready agent 32m v1.17.9
Hoewel in de opdracht
az aks nodepool list
twee knooppuntgroepen worden vermeld, zijn er slechts twee knooppunten beschikbaar in het cluster en beide zijn afkomstig vannodepool1
.
Een goede strategie is het volgende om de kosten voor AKS te optimaliseren wanneer u de vraag naar workloads rechtstreeks beheert:
- Schaal het aantal knooppunten handmatig in knooppuntgroepen.
- Schaal dure, op NV gebaseerde gebruikersknooppuntgroepen naar nul.
Laten we eens kijken naar een strategie waarin u knooppunten moet schalen, maar de vraag niet rechtstreeks kunt beheren.