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 demandes et limites de ressources sont définies comme indiqué dans l’exemple d’extrait suivant :

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.

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.