Partager via


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

Cet article 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).

Une maintenance régulière est effectuée automatiquement sur votre cluster AKS. Il existe deux types d’opérations de maintenance :

Lorsque vous utilisez la fonctionnalité de maintenance planifiée dans AKS, vous pouvez exécuter les deux types de maintenance à la cadence de votre choix pour réduire l’impact de la charge de travail.

Remarque

Vous pouvez utiliser la maintenance planifiée pour planifier le minutage des mises à niveau automatiques, mais l’activation ou la désactivation de la maintenance planifiée n’active pas ou ne désactive pas les mises à niveau automatiques.

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, effectuez une mise à niveau vers la dernière version à l’aide de la az upgrade commande.

Considérations

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.
  • Les opérations de maintenance obéissent au principe faire pour le mieux uniquement et il n’est pas garanti qu’elles se produisent dans une période spécifiée.

Planifier des types de configuration pour la maintenance planifiée

Trois types de configuration de planification sont disponibles pour la maintenance planifiée :

  • default est une configuration de base pour gérer les versions d’AKS, en couvrant la mise à niveau des composants du plan de contrôle et des modules complémentaires système. 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 sécurisées Azure (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.

  • aksManagedNodeOSUpgradeSchedule contrôle 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 de nœud, consultez Corriger et mettre à jour automatiquement des images de nœud de cluster AKS

Nous vous recommandons d’utiliser aksManagedAutoUpgradeSchedule pour tous les scénarios de mise à niveau de version kubernetes de cluster et aksManagedNodeOSUpgradeSchedule pour tous les scénarios de mise à jour corrective de sécurité du système d’exploitation de nœud.

L’option default est destinée exclusivement aux versions hebdomadaires d’AKS. Utilisez cette option default si vous souhaitez contrôler la planification de mise à niveau pour les composants du plan de contrôle AKS (tels que le serveur d’API, ETCD, etc.) et les modules complémentaires (tels que CoreDNS, Metrics Server, etc.).

Les trois types de configurations peuvent coexister.

Créer 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.

Remarque

À partir de la version de l’API 2023-05-01, utilisez les propriétés du tableau suivant pour la configuration de default.

À partir de la version 2023-05-01 de l’API, une fenêtre de maintenance aksManagedAutoUpgradeSchedule ou aksManagedNodeOSUpgradeSchedule, ainsi qu’une configuration default ont les propriétés suivantes :

Nom Description Valeur par défaut
utcOffset Fuseau horaire pour la maintenance du cluster. +00:00
startDate 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. Non applicable
schedule Fréquence de mise à niveau. Trois types sont disponibles : Weekly, AbsoluteMonthly et RelativeMonthly. Non applicable
intervalDays Intervalle en jours des exécutions de maintenance. Applicable uniquement à aksManagedNodeOSUpgradeSchedule. Non applicable
intervalWeeks Intervalle en semaines des exécutions de maintenance. Non applicable
intervalMonths Intervalle en mois des exécutions de maintenance. Non applicable
dayOfWeek Jour de la semaine spécifié pour le début de la maintenance. Non applicable
durationHours Durée de la fenêtre pour l’exécution de la maintenance. Non applicable
notAllowedDates 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 lorsque vous créez la fenêtre de maintenance à l’aide d’un fichier de configuration. Non applicable

Propriétés déconseillées

Remarque

Si vous créez une default configuration avec les propriétés déconseillées suivantes, elle migre automatiquement vers les nouvelles propriétés indiquées dans le tableau précédent.

[Déconseillé] Une default fenêtre de maintenance possède les propriétés héritées suivantes :

Nom Description Valeur par défaut
timeInWeek Dans une configuration default, cette propriété contient les valeurs day et hourSlots qui définissent une fenêtre de maintenance Non applicable
timeInWeek.day Jour de la semaine de la maintenance dans une configuration default. Non applicable
timeInWeek.hourSlots Liste des créneaux d’une heure pour effectuer la maintenance un jour particulier dans une configuration default. Non applicable
notAllowedTime 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. Cette propriété s’applique uniquement lorsque vous créez la fenêtre de maintenance à l’aide d’un fichier de configuration. Non applicable

Types de planification

Quatre types de planification sont pris en charge : Daily, , WeeklyAbsoluteMonthly, et RelativeMonthly.

Le tableau suivant indique quels types sont disponibles pour chaque option de configuration de maintenance :

Type de planification default aksManagedClusterAutoUpgradeSchedule aksManagedNodeOSUpgradeSchedule
Quotidien Non pris en charge ❌ Pris en charge ✅ (après juin 2025) Prise en charge de ✅
Weekly Prise en charge de ✅ Prise en charge de ✅ Prise en charge de ✅
AbsoluteMonthly Non pris en charge ❌ Prise en charge de ✅ Prise en charge de ✅
RelativeMonthly Non pris en charge ❌ Prise en charge de ✅ Prise en charge de ✅

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

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

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

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

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

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

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

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 az aks maintenanceconfiguration add commande.

Le premier exemple ajoute une nouvelle default configuration qui planifie l’exécution de la maintenance de 1h00 à 17h00 tous les lundis dans le UTC fuseau horaire. 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 $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name default --schedule-type Weekly --day-of-week Monday --interval-weeks 1 --duration 4 --utc-offset +00:00 --start-time 01:00

# Add a new aksManagedAutoUpgradeSchedule configuration
az aks maintenanceconfiguration add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00

Mettre à jour une fenêtre de maintenance existante

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

L’exemple suivant met à jour la configuration pour planifier l’exécution de la default maintenance de 2h00 à 18h00 tous les vendredis :

az aks maintenanceconfiguration update --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name default --schedule-type Weekly --day-of-week Friday --interval-weeks 1 --duration 4 --utc-offset +00:00 --start-time 02:00

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

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

az aks maintenanceconfiguration list --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME

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

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

az aks maintenanceconfiguration show --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --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 az aks maintenanceconfiguration delete commande.

L’exemple suivant supprime la configuration de maintenance autoUpgradeSchedule :

az aks maintenanceconfiguration delete --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name autoUpgradeSchedule

Questions fréquemment posées (FAQ)

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

Utilisez la commande az aks maintenanceconfiguration show.

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

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 faire pour savoir si un événement de maintenance s’est produit ?

Pour les versions, consultez la région de votre cluster et recherchez les informations dans les versions hebdomadaires afin de vérifier si elles correspondent à 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 Azure Event Grid liés à la mise à niveau. Pour plus d’informations, consultez AKS en tant que source Event Grid.

Puis-je utiliser plusieurs configurations de maintenance en même temps ?

Oui, vous pouvez exécuter les trois configurations simultanément : default, aksManagedAutoUpgradeSchedule et aksManagedNodeOSUpgradeSchedule. 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 (généralement pas plus de 15 minutes) pour prendre en compte la fenêtre de maintenance. Nous vous recommandons de laisser s’écouler au moins 15 minutes entre la création ou la mise à jour d’une configuration de maintenance et 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ébute. Si le cluster est arrêté, son plan de contrôle est libéré et aucune opération ne peut être effectuée.

Pourquoi l’un de mes pools d’agents a-t-il été mis à niveau en dehors de la fenêtre de maintenance ?

Si un pool d’agents n’est pas mis à niveau (par exemple, car les budgets d’interruption des pods l’ont empêché), il peut être mis à niveau ultérieurement, en dehors de la fenêtre de maintenance. Ce scénario est appelé mise à niveau de rattrapage. Il évite de laisser les pools d’agents être mis à niveau avec une version différente du plan de contrôle AKS.

Une autre raison pour laquelle un pool d’agents peut être mis à niveau de manière inattendue s’il n’existe aucune configuration de maintenance définie ou s’il a été supprimé. Dans ce cas, un cluster avec mise à niveau automatique , mais sans configuration de maintenance est mis à niveau à des moments aléatoires (planification de secours), ce qui peut être une période non souhaitée.

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

Nous vous 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. Vous pouvez également choisir le canal SecurityPatch afin de recevoir des mises à jour de sécurité quotidiennes.

Vous pouvez définir la planification de mise à niveau automatique sur une cadence mensuelle pour rester à jour avec la stratégie de support Kubernetes N-2.

Pour obtenir une discussion détaillée sur les meilleures pratiques de mise à niveau et d’autres considérations, consultez Instructions de mise à jour corrective et de mise à niveau AKS.

Puis-je configurer tous mes clusters dans un abonnement unique pour utiliser la même configuration de maintenance ?

Nous vous déconseillons d’utiliser la même configuration de maintenance pour plusieurs clusters dans un abonnement unique, car cela peut entraîner des erreurs de limitation ARM entraînant l’échec des mises à niveau de cluster. Au lieu de cela, nous vous recommandons de mettre en place des fenêtres de maintenance pour chaque cluster afin d’éviter ces erreurs.

Pourquoi mes pools de nœuds ont-ils été mis à niveau deux fois pendant la même fenêtre de maintenance ?

Si une version plus récente de l’image de nœud devient disponible pendant la fenêtre de maintenance, AKS effectue une deuxième mise à niveau pour vous assurer que vos pools de nœuds exécutent la dernière version. Ce comportement est normal et n’indique pas de problème.

Pour bien démarrer avec la mise à niveau de votre cluster AKS, consultez Options de mise à niveau des clusters AKS.