Apprendre à configurer des intervalles et des exclusions de maintenance.


Utilisez les intervalles et les exclusions de maintenance pour contrôler à quel moment les tâches de maintenance automatique des clusters, telles que les mises à niveau automatiques, peuvent être effectuées sur vos clusters Google Kubernetes Engine (GKE), et à quel moment elles ne doivent surtout pas se produire. Avant de configurer ces règles de maintenance, veillez à vérifier quelles modifications respectent ou non les règles de maintenance de GKE.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Configurer un intervalle de maintenance

Pour configurer un intervalle de maintenance, indiquez quand il commence, sa durée et sa fréquence de répétition. Par exemple, vous pouvez configurer un intervalle de maintenance qui se répète quatre heures par jour, du lundi au vendredi, chaque semaine.

Vous pouvez configurer un intervalle de maintenance à l'aide de Google Cloud Console ou de Google Cloud CLI.

Considérations relatives à la configuration d'un intervalle de maintenance

Lorsque vous configurez un intervalle de maintenance, suivez les instructions ci-dessous :

  • Vous devez comprendre quels types d'événements de maintenance respectent ou non les intervalles de maintenance de GKE. Pour en savoir plus, consultez les sections Maintenance automatique qui respecte les règles de maintenance de GKE et Maintenance automatique qui ne respecte pas les règles de maintenance de GKE.
  • Vous ne pouvez configurer qu'un seul intervalle de maintenance pour un cluster. La configuration d'un nouvel intervalle remplace l'intervalle précédent.
  • Vous devez prévoir une disponibilité de maintenance d'au moins 48 heures sur une période glissante de 32 jours. Seuls les intervalles de disponibilité contigus d'au moins quatre heures sont pris en compte.
  • Lorsque vous utilisez la console Google Cloud, les heures sont toujours affichées selon le fuseau horaire local.
  • Les récurrences basées sur un jour de la semaine sont toujours basées sur l'heure UTC. Par conséquent, nous vous recommandons de définir entièrement les intervalles de maintenance impliquant des récurrences en UTC, via gcloud CLI. Bien que l'heure locale puisse être utilisée dans la définition d'options, le fuseau horaire n'est pas stocké. Par exemple, si votre fuseau horaire est UTC+6 et que vous souhaitez qu'un intervalle de maintenance commence à 02:00 le mercredi dans votre fuseau horaire, spécifiez une valeur UTC de 20:00 le mardi. Pour en savoir plus, consultez la section Fuseaux horaires des intervalles de maintenance.
  • Si votre cluster ne peut pas terminer les mises à niveau des nœuds dans l'intervalle de maintenance programmé, cela peut ralentir le taux de mise à niveau. Vous devrez peut-être tester votre configuration pour trouver l'équilibre optimal entre vitesse et perturbations de votre environnement. Les facteurs pouvant affecter le taux de mise à niveau sont les suivants :

Créer un cluster Standard avec un intervalle de maintenance simple

Vous pouvez créer un intervalle de maintenance simple dans gcloud CLI en spécifiant l'option --maintenance-window. Cette option vous permet de spécifier un intervalle de maintenance quotidien de quatre heures à l'aide d'un format simplifié. Pour créer un cluster Autopilot avec un intervalle de maintenance, utilisez la console Google Cloud.

Créez un cluster Standard avec un intervalle de maintenance simple :

gcloud container clusters create CLUSTER_NAME \
    --maintenance-window START_TIME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre nouveau cluster.
  • START_TIME : horodatage de 24 heures au format UTC, par exemple 16:00.

L'intervalle de maintenance s'exécute chaque jour à l'heure START_TIME spécifiée et dure quatre heures.

Créer un intervalle de maintenance personnalisé

Vous pouvez créer un intervalle de maintenance qui se produit à certains moments de la semaine ou du mois, à l'aide des paramètres supplémentaires expliqués dans cette section.

Par exemple, la commande suivante crée un cluster nommé my-cluster avec un intervalle de maintenance activé à 2h00 UTC le vendredi 23 août 2024. Cet intervalle de maintenance se répète chaque semaine, les lundis et vendredis, et se termine 30 heures plus tard. La première occurrence de l'intervalle de maintenance commence le vendredi 23 août à 2h00 et se termine le samedi 24 août à 8h. Pour en savoir plus, consultez la page concernant la mise en forme des dates et des heures.

gcloud container clusters create my-cluster \
    --maintenance-window-start 2024-08-23T02:00:00Z \
    --maintenance-window-end 2024-08-24T08:00:00Z \
    --maintenance-window-recurrence 'FREQ=WEEKLY:BYDAY=MO,FR'

Pour plus de scénarios, consultez les exemples d'intervalles de maintenance.

Créer un cluster avec un intervalle de maintenance

Vous pouvez créer un cluster Standard avec un intervalle de maintenance à l'aide de gcloud CLI ou de la console Google Cloud. Pour créer un cluster Autopilot avec un intervalle de maintenance, utilisez la console Google Cloud.

gcloud

Créez un cluster standard avec un intervalle de maintenance :

gcloud container clusters create CLUSTER_NAME \
    --maintenance-window-start START_TIME \
    --maintenance-window-end END_TIME \
    --maintenance-window-recurrence RRULE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du nouveau cluster.
  • START_TIME : date et heure auxquelles l'intervalle de maintenance récurrent est activé, exprimé sous la forme d'une valeur RFC-5545 DTSTART. Ensuite, l'intervalle de maintenance se répète en fonction de la valeur RRULE. L'élément START_TIME spécifie également l'heure de début de l'intervalle de maintenance.
  • END_TIME : heure de fin pour calculer la durée de l'intervalle de maintenance, exprimée par le temps écoulé après START_TIME, au même format. La valeur de END_TIME doit être située dans le futur par rapport à START_TIME. Cela ne calcule que la durée de la fenêtre et ne définit pas le moment où l'intervalle de maintenance cesse de se répéter. Les intervalles de maintenance ne cessent de se répéter que lorsqu'ils sont supprimés.
  • RRULE : récurrence de l'intervalle de maintenance, exprimée sous la forme d'une valeur RFC-5545 RRULE. Il s'agit d'un format flexible permettant de spécifier des règles de récurrence de différentes manières, en déterminant le jour de début de l'intervalle de maintenance. Par exemple, vous pouvez spécifier une récurrence à certains moments de la semaine ou du mois. Si la date END_TIME est ultérieure à la date START_TIME, l'intervalle de maintenance s'étend sur plusieurs jours. Par exemple, un intervalle de maintenance commençant le dimanche va se poursuivre le lundi.

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Configurez votre cluster.

  4. Dans le volet de navigation, sous Clusters, cliquez sur Automatisation.

  5. Cochez la case Activer l'intervalle de maintenance.

  6. Sélectionnez l'heure de début et la durée, puis les jours de la semaine pendant lesquels l'intervalle de maintenance est activé. Pour modifier directement la spécification de la règle de récurrence (RRULE), sélectionnez Éditeur personnalisé.

  7. Cliquez sur Créer.

Configuration d'un intervalle de maintenance pour un cluster existant

gcloud

Créez ou mettez à jour un intervalle de maintenance pour un cluster existant :

gcloud container clusters update CLUSTER_NAME \
    --maintenance-window-start START_TIME \
    --maintenance-window-end END_TIME \
    --maintenance-window-recurrence RRULE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du nouveau cluster.
  • START_TIME : date et heure auxquelles l'intervalle de maintenance récurrent est activé, exprimé sous la forme d'une valeur RFC-5545 DTSTART. Ensuite, l'intervalle de maintenance se répète en fonction de la valeur RRULE. L'élément START_TIME spécifie également l'heure de début de l'intervalle de maintenance.
  • END_TIME : heure de fin pour calculer la durée de l'intervalle de maintenance, exprimée par le temps écoulé après START_TIME, au même format. La valeur de END_TIME doit être située dans le futur par rapport à START_TIME. Cela ne calcule que la durée de la fenêtre et ne définit pas le moment où l'intervalle de maintenance cesse de se répéter. Les intervalles de maintenance ne cessent de se répéter que lorsqu'ils sont supprimés.
  • RRULE : récurrence de l'intervalle de maintenance, exprimée sous la forme d'une valeur RFC-5545 RRULE. Il s'agit d'un format flexible permettant de spécifier des règles de récurrence de différentes manières, en déterminant le jour de début de l'intervalle de maintenance. Par exemple, vous pouvez spécifier une récurrence à certains moments de la semaine ou du mois. Si la date END_TIME est ultérieure à la date START_TIME, l'intervalle de maintenance s'étend sur plusieurs jours. Par exemple, un intervalle de maintenance commençant le dimanche va se poursuivre le lundi.

Console

Pour créer ou modifier un intervalle de maintenance pour un cluster existant :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Sous Automatisation, cliquez sur Modifier la stratégie de maintenance à côté du champ Intervalle de maintenance.

  4. Cochez la case Activer l'intervalle de maintenance.

  5. Sélectionnez l'heure de début et la durée, puis les jours de la semaine pendant lesquels l'intervalle de maintenance est activé. Pour modifier directement RRULE, sélectionnez Éditeur personnalisé.

  6. Cliquez sur Save Changes (Enregistrer les modifications).

Terminer manuellement la maintenance incomplète

Si l'intervalle de maintenance prend plus de temps à s'exécuter en raison d'une mise à niveau ou d'une autre tâche de maintenance automatique, GKE tente d'arrêter les tâches de maintenance en cours, puis de les reprendre lors de l'occurrence suivante de l'intervalle de maintenance. Si une mise à niveau automatique est annulée et si vous avez activé les mises à niveau automatiques des nœuds, vos nœuds peuvent se trouver dans une version mixte, mais votre cluster doit fonctionner normalement.

Pour mettre à jour votre cluster manuellement, annuler une mise à niveau partielle ou effectuer un rollback, consultez la page Mettre à jour un cluster manuellement.

Supprimer un intervalle de maintenance

gcloud

Supprimez un intervalle de maintenance d'un cluster :

gcloud container clusters update CLUSTER_NAME --clear-maintenance-window

Remplacez CLUSTER_NAME par le nom du cluster existant.

Console

Pour supprimer un intervalle de maintenance :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Sous Automatisation, cliquez sur Modifier la stratégie de maintenance à côté du champ Intervalle de maintenance.

  4. Décochez la case Activer l'intervalle de maintenance.

  5. Cliquez sur Save Changes (Enregistrer les modifications).

Exemples d'intervalles de maintenance

Les exemples suivants présentent différentes façons de configurer un intervalle de maintenance. Seules les options pertinentes sont affichées, étant donné qu'elles utilisent la même syntaxe pour créer un cluster et mettre à jour un cluster existant.

Les week-ends, à partir du 22 août 2026

Dans cet exemple, la différence entre les heures de début et de fin est de deux jours complets. L'intervalle de maintenance s'exécute donc pendant tout le week-end, sur la totalité du samedi et du dimanche. Si vous souhaitez que la fenêtre ait une durée différente de 48 heures exactement, modifiez la valeur -start pour changer le début de la fenêtre ou la valeur -end pour changer la durée totale de la fenêtre.

  --maintenance-window-start 2026-08-22T00:00:00Z \
  --maintenance-window-end 2026-08-24T00:00:00Z \
  --maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SA'

Du lundi au vendredi, de 9h00 à 17h00 UTC-4

Cet exemple montre comment définir un intervalle de maintenance quotidien, sauf les week-ends. Cet exemple indique un fuseau horaire autre qu'UTC.

   --maintenance-window-start 2026-09-02T09:00:00-04:00 \
   --maintenance-window-end 2026-09-02T17:00:00-04:00 \
   --maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR'

Toutes les semaines à 16h00 pendant 8 heures, UTC-7

Si vous ne spécifiez pas de fuseau horaire pour --maintenance-window-start, l'heure locale est utilisée telle qu'elle est configurée dans votre compte Google Cloud. La **console Google Cloud utilise toujours l'heure locale.**

   --maintenance-window-start 2026-08-13T16:00:00-7:00 \
   --maintenance-window-end 2026-08-14T00:00:00-7:00 \
   --maintenance-window-recurrence 'FREQ=WEEKLY'

Les soirs en semaine

Cet exemple montre un intervalle de maintenance quotidien qui s'exécute pendant la nuit entre le fuseau horaire UTC-7. Dans cet exemple, la fenêtre s'exécute de 20h00 le soir à 4h00 le matin suivant.

   --maintenance-window-start 2026-08-15T20:00:00-7:00 \
   --maintenance-window-end 2026-08-16T04:00:00-7:00 \
   --maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH'

Configurer une exclusion de maintenance

Pour configurer une exclusion de maintenance pour votre cluster, vous devez spécifier les éléments suivants :

  • Nom : nom de l'exclusion (facultatif).
  • Heure de début : date et heure de début de la période d'exclusion.
  • Heure de fin : date et heure de fin de la période d'exclusion. Reportez-vous au tableau suivant qui présente les restrictions relatives à la durée d'une période d'exclusion pour chacun des champs d'application disponibles.
  • Champ d'application : champ d'application des mises à niveau automatiques à restreindre. Reportez-vous au tableau suivant qui présente les champs d'application d'exclusion disponibles.
Champ d'application Description Durée maximale d'exclusion
Aucune mise à niveau (par défaut) Exclut toutes les mises à niveau mineures et de type correctif. Évite les interruptions de VM sur le plan de contrôle et les nœuds du cluster lors des mises à niveau. Ne peut pas dépasser 30 jours.
Aucune mise à niveau mineure Exclut toutes les mises à niveau mineures. Des interruptions de VM peuvent survenir sur le plan de contrôle et les nœuds du cluster en raison de mises à niveau de correctifs. De plus, pour les clusters enregistrés dans les canaux rapide, standard ou stable, vous ne pouvez pas dépasser la fin de la période de compatibilité standard. Pour les clusters enregistrés dans le canal étendu, ne peut pas dépasser la fin de la compatibilité étendue de la version mineure.
Aucune mise à niveau mineure ni de mise à niveau des nœuds Exclut toutes les mises à niveau mineures et les mises à niveau de nœuds. Évite les interruptions de VM sur les nœuds du cluster lors des mises à niveau. Cependant, des perturbations peuvent survenir au niveau du plan de contrôle. Pour les clusters enregistrés dans les canaux rapide, standard ou stable, vous ne pouvez pas dépasser la fin de la période de compatibilité standard. Pour les clusters enregistrés dans le canal étendu, ne peut pas dépasser la fin de la compatibilité étendue de la version mineure.

Créer un cluster avec une exclusion de maintenance

Vous pouvez configurer une exclusion de maintenance lors de la création d'un cluster à l'aide de la console Google Cloud. Cette tâche ne peut pas être effectuée dans gcloud CLI.

Pour créer un cluster avec une exclusion de maintenance :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Configurez votre cluster.

  4. Dans le volet de navigation, sous Cluster, cliquez sur Automatisation.

  5. Sous Exclusions de maintenance, cliquez sur Ajouter une exclusion de maintenance.

  6. Sélectionnez le champ d'application, une heure de début et une heure de fin.

  7. Cliquez sur Créer.

Vous pouvez consulter un exemple d'exclusion de maintenance pour le Black Friday.

Configurer une exclusion de maintenance pour un cluster existant

Vous pouvez configurer une exclusion de maintenance sur un cluster existant à l'aide de la console Google Cloud ou de gcloud CLI.

gcloud

Configurer une exclusion de maintenance pour un cluster existant

gcloud container clusters update CLUSTER_NAME \
    --add-maintenance-exclusion-name EXCLUSION_NAME \
    --add-maintenance-exclusion-start START_DATE_TIME \
    --add-maintenance-exclusion-end END_DATE_TIME \
    --add-maintenance-exclusion-scope SCOPE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • EXCLUSION_NAME : nom de l'exclusion de maintenance.
  • START_DATE_TIME : date et heure de début de l'exclusion.
  • END_DATE_TIME : date et heure de fin de l'exclusion.
  • SCOPE : champ d'application de la mise à niveau à exclure, qui peut être l'une des valeurs suivantes : no_upgrades, no_minor_upgrades ou no_minor_or_node_upgrades.

Pour afficher les formats de date et d'heure acceptés, exécutez gcloud topic datetimes.

Console

Pour configurer une exclusion de maintenance pour un cluster existant, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Sous Automatisation, à côté du champ Exclusions de maintenance, cliquez sur Modifier les exclusions de maintenance.

  4. Sous Exclusions de maintenance, cliquez sur Ajouter une exclusion de maintenance.

  5. Sélectionnez le champ d'application, une heure de début et une heure de fin.

  6. Cliquez sur Enregistrer les modifications.

Supprimer une exclusion de maintenance

Vous pouvez supprimer des exclusions de maintenance à l'aide de la console Google Cloud ou de gcloud CLI.

gcloud

Supprimez une exclusion de maintenance existante :

gcloud container clusters update CLUSTER_NAME \
    --remove-maintenance-exclusion EXCLUSION_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster existant.
  • EXCLUSION_NAME : nom de l'exclusion de maintenance à supprimer.

Console

Pour supprimer une exclusion de maintenance d'un cluster existant, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Sous Automatisation, à côté du champ Exclusions de maintenance, cliquez sur Modifier les exclusions de maintenance.

  4. Sous Exclusions de maintenance, cliquez sur le bouton Supprimer l'élément situé à côté du champ Heure de fin pour l'exclusion que vous souhaitez supprimer.

  5. Cliquez sur Save Changes (Enregistrer les modifications).

Pour afficher toutes les exclusions de maintenance d'un cluster, vous pouvez afficher les règles de maintenance du cluster.

Exemple d'exclusion de maintenance

L'exemple suivant permet d'empêcher les tâches de maintenance pendant quatre jours, du Black Friday au Cyber Monday, durant lesquels de nombreux commerces de détail enregistrent le plus grand nombre de ventes de l'année. Cet exemple montre comment éviter un intervalle de maintenance entre le Black Friday 2021 (26 novembre 2021) et le Cyber Monday 2021 (29 novembre 2021), de minuit sur la côte est (UTC-5) à 23:59:59 sur la côte ouest (UTC-8).

gcloud container clusters update sample-cluster \
    --add-maintenance-exclusion-name black-friday \
    --add-maintenance-exclusion-start 2021-11-26T00:00:00-05:00 \
    --add-maintenance-exclusion-end 2021-11-29T23:59:59-08:00 \
    --add-maintenance-exclusion-scope no_upgrades

Afficher les règles de maintenance d'un cluster

Pour afficher les règles de maintenance d'un cluster, y compris l'intervalle de maintenance éventuel et toutes ses exclusions de maintenance, utilisez la commande suivante :

gcloud container clusters describe CLUSTER_NAME

Dépannage

La limitation du champ d'application des exclusions de maintenance ne peut s'appliquer qu'aux versions disponibles

Lorsque vous limitez le champ d'application des mises à niveau automatiques dans une exclusion de maintenance, le cluster doit être enregistré dans un canal de publication. Dans le cas contraire, vous pouvez rencontrer les erreurs suivantes :

ERROR: (gcloud.container.clusters.update) INVALID_ARGUMENT: Cannot update to
STATIC channel since following maintenancePolicy.maintenanceExclusions can only
apply to release channels. Please remove those maintenance exclusions.
ERROR: (gcloud.container.clusters.update) ResponseError: code=400,
message=MaintenancePolicy.maintenanceExclusions["no"] could not apply to cluster
in STATIC channel, only no_upgrades exclusions are allowed in STATIC channel.

Le nombre d'exclusions de maintenance dépasse la limite

Vous ne pouvez spécifier qu'un maximum de trois exclusions de maintenance qui excluent toutes les mises à niveau (c'est-à-dire définies avec le champ d'application "aucune mise à niveau"). Dans le cas contraire, vous obtenez l'erreur suivante :

ERROR: (gcloud.container.clusters.update) ResponseError: code=400,
message=Number of active maintenance exclusions exceeds limit (3).

Vous ne pouvez spécifier qu'un maximum de 20 exclusions de maintenance. Dans le cas contraire, vous obtenez l'erreur suivante :

ERROR: (gcloud.container.clusters.update) ResponseError: code=400,
message=Number of total maintenance exclusions exceeds limit (20).

Étape suivante