Utiliser la maintenance planifiée pour planifier et contrôler les mises à niveau de votre cluster Azure Kubernetes Service (AKS)

Cet article vous explique comment utiliser la maintenance planifiée pour planifier et contrôler les mises à niveau d’images de cluster et de nœud dans Azure Kubernetes Service (AKS).

Votre cluster AKS fait l’objet d’une maintenance régulière et automatique. Il existe deux types d’opérations de maintenance : initiée par AKS et initiée par l’utilisateur. La maintenance initiée par AKS implique les versions hebdomadaires effectuées par AKS pour maintenir votre cluster à jour avec les dernières fonctionnalités et correctifs. La maintenance initiée par l’utilisateur inclut des mises à niveau automatiques de cluster et des mises à jour de sécurité automatiques du système d’exploitation de nœud. La fonctionnalité de maintenance planifiée vous permet d’exécuter les deux types de maintenance à la cadence de votre choix, ce qui en réduit l’impact sur la charge de travail.

Avant de commencer

  • Cet article suppose que vous avez un cluster AKS existant. Si vous ne disposez pas de cluster AKS, consultez Créer un cluster AKS.
  • Si vous utilisez Azure CLI, veillez à effectuer une mise à niveau vers la dernière version à l’aide de la commande az upgrade.

À propos de l’installation

Lorsque vous utilisez la maintenance planifiée, les considérations suivantes s’appliquent :

  • AKS se réserve le droit d’arrêter ces fenêtres d’opérations de maintenance planifiées pour les opérations non planifiées ou réactives qui sont urgentes ou critiques. Ces opérations de maintenance peuvent même s’exécuter pendant les périodes notAllowedTime ou notAllowedDates définies dans votre configuration.
  • La réalisation des opérations de maintenance obéit au principe faire pour le mieux uniquement et il n’est pas garanti qu’elles se produisent dans une période spécifiée.

Configurations de planification de maintenance planifiée

Trois types de configurations du calendrier de maintenance sont disponibles : default, aksManagedAutoUpgradeSchedule et aksManagedNodeOSUpgradeSchedule.

  • default est une configuration de base utilisée pour contrôler les versions AKS. Ces versions peuvent prendre jusqu’à deux semaines pour être déployées dans toutes les régions à partir du moment initial de l’expédition en raison des pratiques de déploiement d’Azure Coffre (SDP). Choisissez default pour planifier ces mises à jour de manière à vous perturber le moins possible. Vous pouvez surveiller l’état d’une version AKS en cours par région avec l’outil de suivi des versions hebdomadaires.
  • aksManagedAutoUpgradeSchedule contrôle quand effectuer des mises à niveau de cluster planifiées par votre canal de mise à niveau automatique désigné. Cette configuration vous permet de configurer des paramètres de fréquence et de périodicité avec plus de précision par rapport à la configuration default. Pour plus d’informations sur la mise à niveau automatique de clusters, consultez Mettre à niveau automatiquement un cluster Azure Kubernetes Service (AKS).
  • aksManagedNodeOSUpgradeSchedule contrôles quand effectuer le correctif de sécurité de système d’exploitation planifié par votre canal de mise à niveau automatique du système d’exploitation de nœud. Cette configuration vous permet de configurer des paramètres de fréquence et de périodicité avec plus de précision par rapport à la configuration default. Pour plus d’informations sur le canal de mise à niveau automatique du système d’exploitation des nœuds, consultez Corriger et mettre à jour automatiquement des images de nœud du cluster AKS

Nous vous recommandons d’utiliser aksManagedAutoUpgradeSchedule pour tous les scénarios de mise à niveau de clusters et aksManagedNodeOSUpgradeSchedule pour tous les scénarios de correctifs de sécurité du système d’exploitation du nœud. L’option default est destinée exclusivement aux versions hebdomadaires d’AKS. Vous pouvez basculer la configuration default vers la configuration aksManagedAutoUpgradeSchedule ou aksManagedNodeOSUpgradeSchedule à l’aide de la commande az aks maintenanceconfiguration update.

Création d’une fenêtre de maintenance

Remarque

Quand vous utilisez la mise à niveau automatique, utilisez une fenêtre de maintenance d’une durée de quatre heures minimum afin de garantir un fonctionnement correct.

Les fenêtres de maintenance planifiée sont spécifiées en temps universel coordonné (UTC).

Une fenêtre de maintenance default présente les propriétés suivantes :

Nom Description Valeur par défaut
timeInWeek Dans une configuration default, cette propriété contient les valeurs day et hourSlots définissant une fenêtre de maintenance N/A
timeInWeek.day Jour de la semaine de la maintenance dans une configuration default N/A
timeInWeek.hourSlots Liste des créneaux d’une heure pour effectuer la maintenance un jour donné dans une configuration default N/A
notAllowedTime Spécifie une plage de dates, pendant laquelle la maintenance ne peut pas s’exécuter, déterminée par les propriétés enfants start et end. Applicable uniquement lors de la création de la fenêtre de maintenance à l’aide d’un fichier de configuration N/A

Une fenêtre de maintenance aksManagedAutoUpgradeSchedule ou aksManagedNodeOSUpgradeSchedule présente les propriétés suivantes :

Nom Description Valeur par défaut
utcOffset Utilisé pour déterminer le fuseau horaire pour la maintenance du cluster +00:00
startDate La date à laquelle la fenêtre de maintenance commence à prendre effet Date actuelle au moment de la création
startTime Heure du début de la maintenance selon le fuseau horaire déterminé par utcOffset N/A
schedule Utilisé pour déterminer la fréquence. Trois types sont disponibles : Weekly, AbsoluteMonthly et RelativeMonthly N/A
intervalDays Intervalle en jours des exécutions de maintenance. Ne s’applique qu’à aksManagedNodeOSUpgradeSchedule N/A
intervalWeeks Intervalle en semaines des exécutions de maintenance N/A
intervalMonths Intervalle en mois des exécutions de maintenance N/A
dayOfWeek Jour de la semaine spécifié pour le début de la maintenance N/A
durationHours Durée de la fenêtre pour l’exécution de la maintenance N/A
notAllowedDates Spécifie une plage de dates pendant laquelle la maintenance ne peut pas s’exécuter, déterminées par les propriétés enfants start et end. Applicable uniquement lors de la création de la fenêtre de maintenance à l’aide d’un fichier de configuration N/A

Présentation des types de planification

Quatre types de planification sont disponibles : Daily, Weekly, AbsoluteMonthly et RelativeMonthly. Ces types de planification s’appliquent uniquement aux configurations aksManagedClusterAutoUpgradeSchedule et aksManagedNodeOSUpgradeSchedule. Les planifications Daily s’appliquent uniquement aux types aksManagedNodeOSUpgradeSchedule.

Notes

Tous les champs affichés pour chaque type de planification sont obligatoires.

Planification quotidienne

Remarque

Ces planification quotidiennes s’appliquent uniquement aux types de configuration aksManagedNodeOSUpgradeSchedule.

Une planification Daily peut ressembler à « tous les trois jours » :

"schedule": {
    "daily": {
        "intervalDays": 3
    }
}

Planification hebdomadaire

Une planification Weekly peut ressembler à « toutes les deux semaines, le vendredi » :

"schedule": {
    "weekly": {
        "intervalWeeks": 2,
        "dayOfWeek": "Friday"
    }
}

Planification AbsoluteMonthly

Une planification AbsoluteMonthly peut ressembler à « tous les trois mois, le premier jour du mois » :

"schedule": {
    "absoluteMonthly": {
        "intervalMonths": 3,
        "dayOfMonth": 1
    }
}

Planification RelativeMonthly

Une planification RelativeMonthly peut ressembler à « tous les deux mois, le dernier lundi » :

"schedule": {
    "relativeMonthly": {
        "intervalMonths": 2,
        "dayOfWeek": "Monday",
        "weekIndex": "Last"
    }
}

Les valeurs valides pour weekIndex sont First, Second, Third, Fourth et Last.

Ajouter une configuration de fenêtre de maintenance

  • Ajoutez une configuration de fenêtre de maintenance à un cluster AKS à l’aide de la commande az aks maintenanceconfiguration add.

    Le premier exemple ajoute une nouvelle configuration de default qui planifie l’exécution de la maintenance de 01:00 à 02:00 tous les lundis. Le deuxième exemple ajoute une nouvelle configuration aksManagedAutoUpgradeSchedule qui planifie l’exécution de la maintenance tous les troisièmes vendredis du mois, entre 00:00 et 08:00 dans le fuseau horaire UTC+5:30.

    # Add a new default configuration
    az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 1
    
    # Add a new aksManagedAutoUpgradeSchedule configuration
    az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00
    

    Remarque

    Quand vous utilisez un type de configuration default, vous pouvez omettre le paramètre --start-time pour autoriser la maintenance à tout moment au cours d’une journée.

Mettre à jour une fenêtre de maintenance existante

  • Mettez à jour une configuration de maintenance existante à l’aide de la commande az aks maintenanceconfiguration update.

    L’exemple suivant met à jour la configuration default pour planifier l’exécution de la maintenance de 02:00 à 03:00 tous les lundis.

    az aks maintenanceconfiguration update --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 2
    

Répertorier toutes les fenêtres de maintenance dans un cluster existant

Répertoriez toutes les fenêtres de configuration de maintenance actuelles dans votre cluster AKS à l’aide de la commande az aks maintenanceconfiguration list.

az aks maintenanceconfiguration list --resource-group myResourceGroup --cluster-name myAKSCluster

Afficher une fenêtre spécifique de configuration de la maintenance dans un cluster existant

Affichez une fenêtre spécifique de configuration de la maintenance dans votre cluster AKS à l’aide de la commande az aks maintenanceconfiguration show avec le paramètre --name.

az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule

L’exemple de sortie suivant affiche la fenêtre de maintenance pour aksManagedAutoUpgradeSchedule :

{
  "id": "/subscriptions/<subscription>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/maintenanceConfigurations/aksManagedAutoUpgradeSchedule",
  "maintenanceWindow": {
    "durationHours": 4,
    "notAllowedDates": [
      {
        "end": "2024-01-05",
        "start": "2023-12-23"
      }
    ],
    "schedule": {
      "absoluteMonthly": {
        "dayOfMonth": 1,
        "intervalMonths": 3
      },
      "daily": null,
      "relativeMonthly": null,
      "weekly": null
    },
    "startDate": "2023-01-20",
    "startTime": "09:00",
    "utcOffset": "-08:00"
  },
  "name": "aksManagedAutoUpgradeSchedule",
  "notAllowedTime": null,
  "resourceGroup": "myResourceGroup",
  "systemData": null,
  "timeInWeek": null,
  "type": null
}

Supprimez une fenêtre de configuration de la maintenance dans un cluster existant

  • Supprimez une fenêtre de configuration de maintenance dans votre cluster AKS à l’aide de la commande az aks maintenanceconfiguration delete.

    L’exemple suivant supprime la configuration de maintenance autoUpgradeSchedule.

    az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule
    

FAQ

  • Comment puis-je consulter les configurations de maintenance existantes dans mon cluster ?

    Utilisez la commande az aks maintenanceconfiguration show.

  • La maintenance réactive non planifiée peut-elle également se produire pendant les périodes notAllowedTime ou notAllowedDates ?

    Oui. AKS se réserve le droit d’arrêter ces fenêtres pour des opérations de maintenance non planifiées réactives qui sont urgentes ou critiques.

  • Comment savoir si un événement de maintenance s’est produit ?

    Pour les versions, consultez la région de votre cluster et recherchez les informations de version dans les versions hebdomadaires et vérifiez si elles correspondent ou non à votre planification de maintenance. Pour afficher l’état de vos mises à niveau automatiques, recherchez les journaux d’activité sur votre cluster. Vous pouvez également rechercher des événements liés à une mise à niveau spécifique, comme indiqué dans Mettre à niveau un cluster AKS. AKS émet également des événements Event Grid liés à la mise à niveau. Pour plus d’informations, consultez AKS en tant que source Event Grid.

  • Pouvez-vous utiliser plusieurs configurations de maintenance en même temps ?

    Oui, vous pouvez exécuter les trois configurations, c’est-à-dire default, aksManagedAutoUpgradeSchedule et aksManagedNodeOSUpgradeSchedulesimultanément. Si les fenêtres se chevauchent, AKS décide de l’ordre d’exécution.

  • J’ai configuré une fenêtre de maintenance, mais la mise à niveau n’a pas eu lieu. Pourquoi ?

    La mise à niveau automatique d’AKS nécessite un certain temps pour prendre en compte la fenêtre de maintenance. Nous vous recommandons d’au moins 24 heures entre la création ou la mise à jour d’une configuration de maintenance l’heure de début planifiée.

    Vérifiez également que votre cluster est démarré lorsque la fenêtre de maintenance planifiée démarre. Si le cluster est arrêté, son plan de contrôle est libéré et aucune opération ne peut être effectuée.

  • La mise à niveau automatique d’AKS n’a pas mis à niveau tous mes pools d’agents, ou l’un des pools a été mis à niveau en dehors de la fenêtre de maintenance ?

    Si la mise à niveau d’un pool d’agents échoue (par exemple, en raison de budgets d’interruption de pods qui l’empêchent de procéder à la mise à niveau) ou est en état d’échec, il est possible qu’il soit mis à niveau ultérieurement, en dehors de la fenêtre de maintenance. Ce scénario est appelé « mise à niveau de rattrapage » et permet d’éviter de laisser des pools d’agents avec une version différente de celle du plan de contrôle AKS.

  • Existe-t-il de meilleures pratiques pour les configurations de maintenance ?

    Nous recommandons de définir la planification des mises à jour de sécurité du système d’exploitation de nœud sur une cadence hebdomadaire si vous utilisez le canal NodeImage, car une nouvelle image de nœud est livrée chaque semaine et quotidiennement si vous optez pour que le canal SecurityPatch reçoive des mises à jour de sécurité quotidiennes. Définissez la planification de mise à niveau automatique sur une cadence mensuelle pour rester au fait de la stratégie de prise en charge Kubernetes N-2. Pour obtenir une discussion détaillée sur les bonnes pratiques de mise à niveau et d’autres considérations, consultez l’article Correctif et conseils de mise à niveau d’Azure Kubernetes Service.

Étapes suivantes