Tutoriel - Mettre les applications à l’échelle dans Azure Kubernetes Service (AKS)

Si vous avez suivi les didacticiels précédents, vous disposez d’un cluster Kubernetes opérationnel et d’une application Azure Store Front.

Dans ce tutoriel, vous effectuez une mise à l'échelle horizontale des pods dans l’application, essayez la mise à l’échelle automatique des pods et ajustez le nombre de nœuds de machine virtuelle Azure afin de modifier la capacité du cluster à héberger des charges de travail. Vous allez apprendre à effectuer les actions suivantes :

  • Mettez à l’échelle les nœuds Kubernetes.
  • Mettez à l’échelle manuellement des pods Kubernetes qui exécutent votre application.
  • Configurez la mise à l’échelle automatique des pods qui exécutent le front-end de l’application.

Avant de commencer

Dans les didacticiels précédents, vous avez empaqueté une application dans une image conteneur, chargé l’image dans Azure Container Registry, créé un cluster AKS, déployé une application et utilisé Azure Service Bus pour redéployer une application mise à jour. Si vous n’avez pas effectué ces étapes et voulez suivre cette procédure, commencez par Tutoriel 1 : préparer une application pour AKS.

Ce didacticiel modifie les nombres de pods et de nœuds et peut augmenter les coûts de calcul. Utilisez une identité avec l’autorisation de mettre à l’échelle les charges de travail AKS et les pools de nœuds, tels que Contributeur ou Propriétaire pour le groupe de ressources.

Ce didacticiel nécessite Azure CLI version 2.34.1 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Redimensionner manuellement les pods

Poste de travail AKS

  1. Modifiez la configuration de mise à l’échelle pour le service de commande en sélectionnant Scale>Select Deployment : order-service>Edit Configuration>Number of Replicas : 5. Capture d’écran montrant la modification de la configuration de mise à l’échelle du service order-service.

  2. Vérifiez que la mise à jour du déploiement se termine avant de continuer.

  3. Affichez les pods dans votre cluster à l’aide de la commande kubectl get.

    kubectl get pods
    

    L’exemple de sortie suivant montre les pods exécutant l’application Azure Store Front :

    NAME                               READY     STATUS     RESTARTS   AGE
    order-service-848767080-tf34m      1/1       Running    0          31m
    product-service-4019737227-2q2qz   1/1       Running    0          31m
    store-front-2606967446-2q2qz       1/1       Running    0          31m
    
  4. Changez manuellement le nombre de pods dans le déploiement store-front à l’aide de la commande kubectl scale.

    kubectl scale --replicas=5 deployment.apps/store-front
    
  5. Vérifiez que les pods supplémentaires ont été créés à l’aide de la commande kubectl get pods.

    kubectl get pods --selector app=store-front
    

    L’exemple de sortie suivant montre les pods supplémentaires exécutant l’application Azure Store Front :

    NAME                              READY     STATUS    RESTARTS   AGE
    store-front-3309479140-2hfh0      1/1       Running   0          3m
    store-front-3309479140-bzt05      1/1       Running   0          3m
    store-front-3309479140-fvcvm      1/1       Running   0          3m
    store-front-3309479140-hrbf2      1/1       Running   0          15m
    store-front-3309479140-qphz8      1/1       Running   0          3m
    

Mettre à l’échelle les pods automatiquement

Poste de travail AKS

  1. Dans le Project, sélectionnez le bouton >Kubernetes YAML. Sélectionnez la source de l’application, Kubernetes YAML

  2. Copiez et collez ce manifeste de mise à l’échelle automatique YAML et les limites des ressources.

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: store-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: store-front
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
    
  3. Sélectionnez Suivant>Déployer>fermer. Capture d’écran montrant le collage dans la configuration YAML.

  4. Sélectionnez Mise à l’échelle>Sélectionnez le déploiement : store-front. Vous pouvez voir que le mode de mise à l’échelle est maintenant réglé sur HPA, et que les limites du nombre de réplicas ainsi que l’utilisation du processeur / la cible sont définies par la configuration. Capture d’écran montrant la vue d’ensemble de la mise à l’échelle d’AKS, avec le mode HPA pour le déploiement « store-front ».

  5. Vérifiez que le mode HPA est activé et que les limites du réplica correspondent aux valeurs du manifeste.

Ligne de commande

Pour utiliser la mise à l’échelle automatique des pods horizontaux, tous les conteneurs doivent avoir des requêtes et limites de processeur définies et les pods doivent avoir des requêtes définies. Dans le déploiement aks-store-quickstart, le conteneur front-end requiert 1m de CPU, avec une limite de 1000m de CPU.

Ces limites et requêtes de ressources sont définies pour chaque conteneur, comme indiqué dans l’exemple de YAML condensé suivant :

...
  containers:
  - name: store-front
    image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
    ports:
    - containerPort: 8080
      name: store-front
...
    resources:
      requests:
        cpu: 1m
...
      limits:
        cpu: 1000m
...

Mise à l’échelle automatique des pods à l’aide d’un fichier manifeste

  1. Créez un fichier manifeste pour définir le comportement de l’outil de mise à l’échelle automatique et les limites de ressources, comme indiqué dans l’exemple condensé de fichier manifeste aks-store-quickstart-hpa.yaml suivant :

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: store-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: store-front
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
    
  2. Appliquez le fichier manifeste de l’outil de mise à l’échelle automatique à l’aide de la commande kubectl apply.

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Vérifiez l’état de l’outil de mise à l’échelle automatique à l’aide de la commande kubectl get hpa.

    kubectl get hpa
    

    Au bout de quelques minutes, avec une charge minimale sur l’application Azure Store Front, le nombre de réplicas de pods descend à trois. Vous pouvez utiliser à nouveau la commande kubectl get pods pour voir les pods inutiles supprimés.

    Continuez lorsque les colonnes TARGETS et REPLICAS indiquent le comportement de mise à l’échelle automatique attendu pour store-front-hpa.

Remarque

Vous pouvez activer le module complémentaire AKS KEDA (Kubernetes Event-Driven Autoscaler) sur votre cluster afin d’assurer la mise à l’échelle en fonction du nombre d’événements à traiter. Pour plus d’informations, consultez Activer la mise à l’échelle automatique d’application simplifiée avec le module complémentaire KEDA (Kubernetes Event-Driven Autoscaling) (préversion).

Mettre manuellement à l’échelle les nœuds AKS

Remarque

Si vous avez créé un cluster AKS Automatic, ces étapes ne s’appliquent pas, car le cluster met automatiquement les nœuds à l’échelle.

Si vous avez créé votre cluster AKS Standard à l’aide des commandes des didacticiels précédents, votre cluster a trois nœuds. Si vous souhaitez augmenter ou diminuer cette quantité, vous pouvez ajuster manuellement le nombre de nœuds.

L’exemple suivant augmente le nombre de nœuds à cinq dans le cluster Kubernetes nommé myAKSCluster. Quelques minutes sont nécessaires pour exécuter la commande.

  • Mettez à l’échelle les nœuds de cluster avec la commande az aks scale.

    Une fois le cluster mis à l’échelle avec succès, la sortie obtenue ressemble à l’exemple de sortie suivant :

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster --query "[].{name:name,count:count}" -o table
    
    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 5
    

    Une fois le cluster mis à l’échelle avec succès, le résultat obtenu ressemblera à l’exemple de sortie suivant :

    "aadProfile": null,
    "addonProfiles": null,
    "agentPoolProfiles": [
      {
        ...
        "count": 5,
        "mode": "System",
        "name": "nodepool1",
        "osDiskSizeGb": 128,
        "osDiskType": "Managed",
        "osType": "Linux",
        "ports": null,
        "vmSize": "Standard_DS2_v2",
        "vnetSubnetId": null
        ...
      }
      ...
    ]
    

Vous pouvez également mettre à l’échelle automatiquement les nœuds de votre cluster. Pour plus d’informations, consultez Utiliser la mise à l’échelle automatique de cluster avec des pools de nœuds.

Étapes suivantes

Dans ce didacticiel, vous avez utilisé différentes fonctionnalités de mise à l’échelle dans votre cluster Kubernetes. Vous avez appris à :

  • Mettez à l’échelle manuellement des pods Kubernetes qui exécutent votre application.
  • Configurez la mise à l’échelle automatique des pods qui exécutent le front-end de l’application.
  • Mettez à l’échelle manuellement les nœuds Kubernetes.

Si vous avez terminé, sélectionnez l’icône Supprimer , puis, dans le message de confirmation, sélectionnez Également supprimer l’espace de noms. Capture d’écran montrant la suppression du projet de bureau AKS en cliquant sur l’icône corbeille.

Dans le tutoriel suivant, vous allez apprendre à mettre à niveau Kubernetes dans votre cluster AKS.