Zelfstudie: toepassingen schalen in AKS (Azure Kubernetes Service)
Als u de zelfstudies hebt gevolgd, hebt u een werkend Kubernetes-cluster in AKS en hebt u de Azure Voting-voorbeeldapp geïmplementeerd. In deze zelfstudie, deel vijf van zeven, schaalt u de schillen in de app en probeert u automatisch schalen van schillen uit. U leert ook hoe u het aantal Azure VM-knooppunten schaalt om de capaciteit van het cluster voor het hosten van werkbelastingen te wijzigen. In deze zelfstudie leert u procedures om het volgende te doen:
- Kubernetes-knooppunten schalen
- Handmatig Kubernetes-pods schalen waarop uw toepassing wordt uitgevoerd
- Automatisch schalen configureren van pods die de front-end-app uitvoeren
In latere zelfstudies wordt de Azure Vote-toepassing bijgewerkt naar een nieuwe versie.
Voordat u begint
In eerdere zelfstudies is een toepassing verpakt in een containerinstallatiekopie. Deze installatiekopie is geüpload naar Azure Container Registry en u hebt een AKS-cluster gemaakt. De toepassing is vervolgens geïmplementeerd in het AKS-cluster. Als u deze stappen niet hebt uitgevoerd en u deze zelfstudie wilt volgen, begint u met Tutorial 1 – Create container images (Zelfstudie 1: containerinstallatiekopieën maken).
Voor deze zelfstudie moet u Azure CLI versie 2.0.53 of hoger uitvoeren. Voer az --version uit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.
Schillen handmatig schalen
Bij de implementatie van de front-end van Azure Vote en het Redis-exemplaar in eerdere zelfstudies, is er één replica gemaakt. Als u het aantal en de status van pods in uw cluster wilt zien, gebruikt u de opdracht kubectl get als volgt:
kubectl get pods
In het volgende voorbeeld van uitvoer ziet u één pod voor de front-end en één voor de back-end:
NAME READY STATUS RESTARTS AGE
azure-vote-back-2549686872-4d2r5 1/1 Running 0 31m
azure-vote-front-848767080-tf34m 1/1 Running 0 31m
Als u het aantal pods in de implementatie van azure-vote-front handmatig wilt wijzigen, gebruikt u de opdracht kubectl scale. In het volgende voorbeeld wordt het aantal pods voor de front-end verhoogd naar 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Voer kubectl get pods opnieuw uit om te controleren of AKS de extra pods heeft gemaakt. Na een minuut of zo zijn de pods beschikbaar in uw cluster:
kubectl get pods
READY STATUS RESTARTS AGE
azure-vote-back-2606967446-nmpcf 1/1 Running 0 15m
azure-vote-front-3309479140-2hfh0 1/1 Running 0 3m
azure-vote-front-3309479140-bzt05 1/1 Running 0 3m
azure-vote-front-3309479140-fvcvm 1/1 Running 0 3m
azure-vote-front-3309479140-hrbf2 1/1 Running 0 15m
azure-vote-front-3309479140-qphz8 1/1 Running 0 3m
Schillen automatisch schalen
Kubernetes biedt ondersteuning voor het automatisch horizontaal schalen van schillen om zo het aantal schillen in een implementatie aan te passen op basis van het CPU-gebruik of andere geselecteerde metrische gegevens. De Metrics Server wordt gebruikt voor het doorgeven van gegevens over het gebruik van resources aan Kubernetes en wordt automatisch geïmplementeerd in AKS-clusters met versie 1.10 en hoger. Als u de versie van uw AKS-cluster wilt weergeven, gebruikt u de opdracht az aks show, zoals in het volgende voorbeeld wordt weergegeven:
az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
Notitie
Als uw AKS-cluster kleiner is dan 1,10, wordt de Metrics Server niet automatisch geïnstalleerd. De Metrics Server-installatiemanifesten zijn beschikbaar als een components.yaml-asset op Metric Server-releases, wat betekent dat u deze kunt installeren via een URL. Zie de sectie Implementatie van het Leesmij-bestand voor meer informatie over deze YAML-definities.
Installatievoorbeeld:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
Als u automatisch schalen wilt gebruiken, moeten CPU-aanvragen en -limieten voor alle containers in uw schillen en uw schillen zijn gedefinieerd. In de azure-vote-front-implementatie vraagt de front-end container al om 0,25 CPU, met een limiet van 0,5 CPU.
Deze resourceaanvragen en -limieten worden gedefinieerd voor elke container, zoals wordt weergegeven in het volgende voorbeeldfragment:
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
In het volgende voorbeeld wordt de opdracht kubectl autoscale gebruikt om het aantal pods in de implementatie azure-vote-front automatisch te schalen. Als gemiddeld CPU-gebruik voor alle doeleinden 50% van het aangevraagde gebruik overschrijdt, verhoogt de functie voor automatisch schalen de schillen tot maximaal tien exemplaren. Minimaal 3 exemplaren worden dan gedefinieerd voor de implementatie:
kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
U kunt ook een manifestbestand maken om het gedrag van automatisch schalen en resourcelimieten te definiëren. Hier volgt een voorbeeld van een manifestbestand met de naam azure-vote-hpa.yaml.
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: azure-vote-back-hpa
spec:
maxReplicas: 10 # define max replica count
minReplicas: 3 # define min replica count
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: azure-vote-back
targetCPUUtilizationPercentage: 50 # target CPU utilization
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: azure-vote-front-hpa
spec:
maxReplicas: 10 # define max replica count
minReplicas: 3 # define min replica count
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: azure-vote-front
targetCPUUtilizationPercentage: 50 # target CPU utilization
Gebruik kubectl apply om de automatisch schalen toe te passen die is gedefinieerd in het manifestbestand azure-vote-hpa.yaml.
kubectl apply -f azure-vote-hpa.yaml
Gebruik de opdracht kubectl get hpa als volgt om de status van de functie voor automatisch schalen te bekijken:
kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
azure-vote-front Deployment/azure-vote-front 0% / 50% 3 10 3 2m
Bij een minimale belasting van de Azure Vote-app neemt het aantal pod-replica's na enkele minuten automatisch af tot drie. U kunt kubectl get pods opnieuw gebruiken om te zien dat de overbodige pods worden verwijderd.
AKS-knooppunten handmatig schalen
Als u uw Kubernetes-cluster in de vorige zelfstudie hebt gemaakt met de opdrachten uit de vorige zelfstudie, heeft het cluster twee knooppunten. U kunt het aantal knooppunten handmatig aanpassen als u meer of minder containerwerkbelastingen in uw cluster plant.
In het volgende voorbeeld wordt het aantal knooppunten in het Kubernetes-cluster myAKSCluster verhoogd tot drie. Het uitvoeren van deze opdracht duurt enkele minuten.
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
Wanneer het cluster is geschaald, is de uitvoer vergelijkbaar met het volgende voorbeeld:
"agentPoolProfiles": [
{
"count": 3,
"dnsPrefix": null,
"fqdn": null,
"name": "myAKSCluster",
"osDiskSizeGb": null,
"osType": "Linux",
"ports": null,
"storageProfile": "ManagedDisks",
"vmSize": "Standard_D2_v2",
"vnetSubnetId": null
}
Volgende stappen
In deze zelfstudie hebt u verschillende schaalfuncties in uw Kubernetes-cluster gebruikt. U hebt geleerd hoe u:
- Handmatig Kubernetes-pods schalen waarop uw toepassing wordt uitgevoerd
- Automatisch schalen configureren van pods die de front-end-app uitvoeren
- Kubernetes-knooppunten handmatig schalen
Ga verder met de volgende zelfstudie om te leren hoe u toepassingen bijwerkt in Kubernetes.