Tutoriel : Mettre à l’échelle des applications dans Azure Kubernetes Service (AKS)
Si vous avez suivi les tutoriels, vous disposez d’un cluster Kubernetes opérationnel dans AKS, et vous avez déployé l’exemple d’application Azure Voting. Dans ce tutoriel (cinquième d’une série de sept), vous allez effectuer un scale-out des pods dans l’application et essayer la mise à l’échelle automatique des pods. Vous allez également apprendre à mettre à l’échelle le nombre de nœuds de machine virtuelle Azure afin de modifier la capacité du cluster pour l’hébergement des charges de travail. Vous allez apprendre à effectuer les actions suivantes :
- Mettre à l’échelle les nœuds Kubernetes
- Mettre à l’échelle manuellement des pods Kubernetes qui exécutent votre application
- Configurer la mise à l’échelle automatique des pods qui exécutent le serveur frontal d’applications
Dans les tutoriels ultérieurs, l’application Azure Vote est mise à jour vers une nouvelle version.
Avant de commencer
Dans les tutoriels précédents, une application a été empaquetée dans une image conteneur. Cette image a été chargée dans Azure Container Registry et vous avez créé un cluster AKS. L’application a ensuite été déployée sur le cluster AKS. Si vous n’avez pas effectué ces étapes et si vous souhaitez suivre cette procédure, commencez par Tutoriel 1 : Créer des images conteneur.
Ce didacticiel nécessite l’exécution de l’interface de ligne de commande Azure CLI version 2.0.53 ou ultérieure. Exécutez az --version
pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
Mettre à l’échelle des pods manuellement
Lorsque le serveur frontal Azure Vote et l’instance Redis ont été déployés dans des didacticiels précédents, un seul réplica a été créé. Pour voir le nombre et l’état des pods de votre cluster, utilisez la commande kubectl get comme suit :
kubectl get pods
L’exemple de sortie suivant montre un pod de serveur frontal et un pod de serveur principal :
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
Pour changer manuellement le nombre de pods dans le déploiement azure-vote-front, utilisez la commande kubectl scale. L’exemple suivant augmente le nombre de pods de serveur frontal à 5 :
kubectl scale --replicas=5 deployment/azure-vote-front
Réexécutez kubectl get pods pour vérifier qu’AKS crée correctement les pods supplémentaires. Au bout d’une minute environ, les pods sont disponibles dans votre 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
Mettre à l’échelle les pods automatiquement
Kubernetes prend en charge la mise à l’échelle automatique des pods horizontaux pour ajuster le nombre de pods dans un déploiement en fonction de l’utilisation du processeur ou d’autres métriques. Metrics Server est utilisé pour indiquer l’utilisation des ressources à Kubernetes et est automatiquement déployé dans les clusters AKS versions 1.10 et ultérieures. Pour voir la version de votre cluster AKS, utilisez la commande az aks show, comme indiqué dans l’exemple suivant :
az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
Notes
Si votre cluster AKS est inférieur à 1.10, Metrics Server n’est pas installé automatiquement. Les manifestes d’installation de Metrics Server sont disponibles en tant que ressource components.yaml
dans les versions de Metrics Server, ce qui signifie que vous pouvez les installer via une URL. Pour en savoir plus sur ces définitions YAML, consultez la section Déploiement du fichier Lisez-moi.
Exemple d’installation :
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
Pour utiliser la mise à l’échelle automatique, tous les conteneurs de vos pods et vos pods doivent avoir des demandes et limites de processeur définies. Dans le déploiement azure-vote-front
, le conteneur front-end demande déjà 0,25 processeur, avec une limite de 0,5 processeur.
Ces limites et demandes de ressources sont définies pour chaque conteneur comme indiqué dans l’exemple d’extrait suivant :
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
L’exemple suivant utilise la commande kubectl autoscale pour effectuer un scaling automatique du nombre de pods dans le déploiement azure-vote-front. Si l’utilisation moyenne du processeur sur tous les pods dépasse 50 % de l’utilisation demandée, l’outil de mise à l’échelle automatique (ou « autoscaler ») fait passer le nombre de pods à 10 instances, au maximum. Un minimum de 3 instances est ensuite défini pour le déploiement :
kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
Vous pouvez également créer un fichier manifeste pour définir le comportement de la mise à l’échelle automatique et les limites des ressources. Voici un exemple de fichier manifeste nommé 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
Utilisez kubectl apply
pour appliquer la mise à l’échelle automatique définie dans le fichier manifeste azure-vote-hpa.yaml
.
kubectl apply -f azure-vote-hpa.yaml
Pour voir l’état de la mise à l’échelle automatique, utilisez la commande kubectl get hpa
comme suit :
kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
azure-vote-front Deployment/azure-vote-front 0% / 50% 3 10 3 2m
Au bout de quelques minutes, avec une charge minimale sur l’application Azure Vote, le nombre de réplicas de pods descend automatiquement à trois. Vous pouvez utiliser à nouveau kubectl get pods
pour voir les pods inutiles en cours de suppression.
Notes
Pour obtenir d’autres exemples sur l’utilisation de la fonction de mise à l’échelle automatique de pod horizontale, consultez HorizontalPodAutoscaler Walkthrough.
Mettre manuellement à l’échelle les nœuds AKS
Si vous avez créé votre cluster Kubernetes à l’aide des commandes dans le tutoriel précédent, le cluster comporte deux nœuds. Vous pouvez ajuster le nombre de nœuds manuellement si vous prévoyez davantage ou moins de charges de travail de conteneur sur votre cluster.
L’exemple suivant permet d’augmenter le nombre de nœuds à trois dans le cluster Kubernetes nommé myAKSCluster. Quelques minutes sont nécessaires pour exécuter la commande.
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
Quand le cluster a été mis à l’échelle correctement, la sortie ressemble à l’exemple suivant :
"agentPoolProfiles": [
{
"count": 3,
"dnsPrefix": null,
"fqdn": null,
"name": "myAKSCluster",
"osDiskSizeGb": null,
"osType": "Linux",
"ports": null,
"storageProfile": "ManagedDisks",
"vmSize": "Standard_D2_v2",
"vnetSubnetId": null
}
Étapes suivantes
Dans ce didacticiel, vous avez utilisé différentes fonctionnalités de mise à l’échelle dans votre cluster Kubernetes. Vous avez appris à :
- Mettre à l’échelle manuellement des pods Kubernetes qui exécutent votre application
- Configurer la mise à l’échelle automatique des pods qui exécutent le serveur frontal d’applications
- Mettre à l’échelle manuellement les nœuds Kubernetes
Passez au didacticiel suivant pour savoir comment mettre à jour une application dans Kubernetes.