Arrêter et démarrer un cluster Azure Kubernetes Service (AKS)

Vous n’avez peut-être pas besoin d’exécuter en continu vos charges de travail Azure Kubernetes Service (AKS). Par exemple, vous pouvez utiliser votre cluster de développement uniquement pendant les heures d’ouverture. Ce qui signifie que votre cluster peut être inactif à certaines heures et n’exécute rien de plus que les composants système. Vous pouvez réduire l’empreinte du cluster en mettant à l’échelle tous les pools de nœud User sur 0, mais votre pool System reste nécessaire à l’exécution des composants système pendant que le cluster est en cours d’exécution.

Pour mieux optimiser vos coûts pendant ces périodes, vous pouvez désactiver, ou arrêter, votre cluster. Cette action arrête votre plan de contrôle et les nœuds de l’agent, ce qui vous permet d’économiser tous les coûts de calcul, tout en conservant l’ensemble de vos objets, à l’exception des pods autonomes. L’état du cluster est stocké et sert lorsque vous le redémarrez, ce qui vous permet de reprendre là où vous vous étiez arrêté.

Avant de commencer

Cet article suppose que vous disposez d’un cluster AKS. Si vous avez besoin d’un cluster AKS, vous pouvez en créer un en utilisant Azure CLI, Azure PowerShell ou le Portail Azure.

À propos de la fonctionnalité arrêt/démarrage du cluster

Lorsque vous utilisez la fonctionnalité arrêt/démarrage du cluster, les conditions suivantes s’appliquent :

  • Cette fonctionnalité est uniquement prise en charge par les clusters supportés par des groupes de machines virtuelles identiques.
  • Vous ne pouvez pas arrêter les clusters qui utilisent la fonctionnalité d’Autoapprovisionnement des nœuds (NAP).
  • L’état du cluster d’un cluster AKS arrêté est conservé pendant 12 mois au maximum. Si votre cluster est arrêté pendant plus de 12 mois, vous ne pouvez pas récupérer l’état. Pour plus d’informations, consultez les stratégies de support AKS.
  • Vous pouvez uniquement lancer ou supprimer des opérations sur un cluster AKS à l’arrêt. Pour effectuer d’autres opérations, telles que la mise à l’échelle ou la mise à niveau, vous devez d’abord démarrer votre cluster.
  • Si vous provisionnez des PrivateEndpoints liés à des clusters privés, ils doivent être supprimés et recréés quand vous démarrez un cluster AKS arrêté.
  • Étant donné que le processus d’arrêt draine tous les nœuds, tous les pod autonomes (c’est-à-dire les pods non gérés par un Deployment, StatefulSet, DaemonSet, Job, etc.) seront supprimés.
  • Lorsque vous démarrez la sauvegarde de votre cluster, le comportement suivant est attendu :
    • L’adresse IP de votre serveur d’API peut changer.
    • Si vous utilisez le programme de mise à l’échelle automatique de cluster, lorsque vous démarrez votre cluster, le nombre de nœuds existant peut ne pas être compris entre les valeurs de plage minimale et maximale que vous avez définies. Le cluster démarre avec le nombre de nœuds dont il a besoin pour exécuter ses charges de travail, et ce nombre n’est pas impacté par les paramètres de votre programme de mise à l’échelle automatique. Quand votre cluster effectue des opérations de mise à l’échelle, les valeurs minimale et maximale ont un impact sur le nombre de nœuds actuel. Le cluster finit par atteindre la plage souhaitée et y reste jusqu’à ce que vous l’arrêtiez.

Arrêter un cluster AKS

  1. Utilisez la commande az aks stop pour arrêter un cluster AKS en cours d’exécution, y compris les nœuds et le plan de contrôle. L’exemple suivant arrête un cluster nommé myAKSCluster :

    az aks stop --name myAKSCluster --resource-group myResourceGroup
    
  2. Vérifiez que votre cluster est arrêté en utilisant la commande az aks show et en confirmant que powerState s’affiche comme Stopped.

    az aks show --name myAKSCluster --resource-group myResourceGroup
    

    Le résultat doit être similaire à l’exemple condensé de sortie suivant :

    {
    [...]
      "nodeResourceGroup": "MC_myResourceGroup_myAKSCluster_westus2",
      "powerState":{
        "code":"Stopped"
      },
      "privateFqdn": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
    [...]
    }
    

    Si provisioningState affiche Stopping, votre cluster n’est pas encore complètement arrêté.

Important

Si vous utilisez des budgets d’interruption de pods, l’opération d’arrêt peut être plus longue, car le processus de drainage prendra plus de temps.

Démarrer un cluster AKS

Attention

N’arrêtez pas et ne démarrez pas vos clusters à plusieurs reprises. Cela peut entraîner des erreurs. Une fois votre cluster arrêté, vous devez attendre au moins 15 à 30 minutes avant de le redémarrer.

  1. Utilisez la commande az aks start pour démarrer un cluster AKS arrêté. Le cluster redémarre dans l’état du plan de contrôle et avec le nombre de nœuds d’agent précédents. L’exemple suivant démarre un cluster nommé myAKSCluster :

    az aks start --name myAKSCluster --resource-group myResourceGroup
    
  2. Vérifiez que votre cluster a démarré en utilisant la commande az aks show et en confirmant que powerState affiche Running.

    az aks show --name myAKSCluster --resource-group myResourceGroup
    

    Le résultat doit être similaire à l’exemple condensé de sortie suivant :

    {
    [...]
      "nodeResourceGroup": "MC_myResourceGroup_myAKSCluster_westus2",
      "powerState":{
        "code":"Running"
     },
     "privateFqdn": null,
     "provisioningState": "Succeeded",
     "resourceGroup": "myResourceGroup",
    [...]
    }
    

    Si provisioningState affiche Starting, votre cluster n’a pas encore complètement démarré.

Étapes suivantes