Configurer des intervalles de maintenance et des exclusions

Cette page explique comment utiliser les intervalles de maintenance et les exclusions de maintenance qui permettent de 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).

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

Configurez les paramètres gcloud par défaut à l'aide de l'une des méthodes suivantes :

  • Utilisez gcloud init pour suivre les instructions permettant de définir les paramètres par défaut.
  • Utilisez gcloud config pour définir individuellement l'ID, la zone et la région de votre projet.

Utiliser gcloud init

Si le message d'erreur One of [--zone, --region] must be supplied: Please specify location s'affiche, effectuez les tâches ci-dessous.

  1. Exécutez gcloud init et suivez les instructions :

    gcloud init

    Si vous utilisez SSH sur un serveur distant, utilisez l'option --console-only pour empêcher la commande d'ouvrir un navigateur :

    gcloud init --console-only
  2. Suivez les instructions pour autoriser gcloud à utiliser votre compte Google Cloud.
  3. Créez ou sélectionnez une configuration.
  4. Choisissez un projet Google Cloud.
  5. Choisissez une zone Compute Engine par défaut pour les clusters zonaux ou une région pour les clusters régionaux ou Autopilot.

Utiliser gcloud config

  • Définissez votre ID de projet par défaut :
    gcloud config set project PROJECT_ID
  • Si vous utilisez des clusters zonaux, définissez votre zone de calcul par défaut :
    gcloud config set compute/zone COMPUTE_ZONE
  • Si vous utilisez des clusters Autopilot ou régionaux, définissez votre région de calcul par défaut :
    gcloud config set compute/region COMPUTE_REGION
  • Mettez à jour gcloud vers la dernière version :
    gcloud components update

Configurer un intervalle de maintenance

Pour configurer un intervalle de maintenance, vous devez définir son heure de début, 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 chaque semaine du lundi au vendredi.

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

Créer un cluster avec un intervalle de maintenance simple

Vous pouvez créer un intervalle de maintenance simple dans gcloud 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 avec un intervalle de maintenance simple, exécutez la commande suivante :

gcloud container clusters create cluster-name \
  --maintenance-window start-time

où :

  • cluster-name est le nom du nouveau cluster.
  • start-time est défini sur un horodatage de 24 heures en temps 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 cluster avec un intervalle de maintenance

Vous pouvez créer un cluster avec un intervalle de maintenance à l'aide de l'outil gcloud ou de la console Google Cloud.

gcloud

Pour créer un cluster avec un intervalle de maintenance simple, exécutez la commande suivante :

gcloud container clusters create cluster-name \
  --maintenance-window-start start-time \
  --maintenance-window-end end-time \
  --maintenance-window-recurrence rrule

où :

  • cluster-name est le nom du nouveau cluster.
  • start-time est une expression DTSTART RFC-5545.
  • end-time est défini au même format que start-time, mais sert uniquement à calculer la durée de l'intervalle de maintenance. La valeur de end-time doit être située dans le futur par rapport à start-time.
  • rrule est une expression RRULE RFC-5545. Il s'agit d'un format extrêmement flexible permettant de spécifier des règles de récurrence de différentes manières.

Par exemple, la commande suivante crée un cluster nommé my-cluster avec un intervalle de maintenance qui commence à 2h00 UTC le 1er août 2019, se termine quatre heures plus tard et s'exécute tous les jours. 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 2019-08-01T02:00:00Z \
  --maintenance-window-end 2019-08-01T06:00:00Z \
  --maintenance-window-recurrence FREQ=DAILY

Console

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

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Configurez le cluster selon vos besoins.

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

Configuration d'un intervalle de maintenance pour un cluster existant

gcloud

Pour créer ou mettre à jour un intervalle de maintenance pour un cluster existant, exécutez la commande suivante :

gcloud container clusters update cluster-name \
  --maintenance-window-start start-time \
  --maintenance-window-end end-time \
  --maintenance-window-recurrence rrule

où :

  • cluster-name est le nom du cluster existant.
  • start-time est une expression DTSTART RFC-5545.
  • end-time est défini au même format que start-time, mais sert uniquement à calculer la durée de l'intervalle de maintenance. La valeur de end-time doit être située dans le futur par rapport à start-time.
  • rrule est une expression RRULE RFC-5545. Il s'agit d'un format extrêmement flexible permettant de spécifier des règles de récurrence de différentes manières.

Console

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

  1. Accédez à la page Google Kubernetes Engine dans 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).

Finaliser manuellement une tâche de 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.

Suppression d'un intervalle de maintenance

gcloud

Pour supprimer un intervalle de maintenance d'un cluster, exécutez la commande suivante :

gcloud container clusters update cluster-name --clear-maintenance-window

cluster-name est le nom du cluster existant.

Console

Pour supprimer un intervalle de maintenance :

  1. Accédez à la page Google Kubernetes Engine dans 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.

Toutes les semaines, les mardis et mercredis, à partir du 27 août 2019, la journée entière

Dans cet exemple, la différence entre les heures de début et de fin correspond à une journée entière. L'intervalle de maintenance s'exécute donc pendant 24 heures les mardis et les mercredis.

--maintenance-window-start 2019-08-27T00:00:00Z \
--maintenance-window-end 2019-08-28T00:00:00Z \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=TU,WE'
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 2019-09-02T09:00:00-04:00 \
--maintenance-window-end 2019-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. Google Cloud Console utilise toujours l'heure locale.

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

Configurer une exclusion de maintenance

Pour configurer une exclusion de maintenance, vous devez définir son nom (facultatif), ainsi que ses heures de début et de fin. L'exclusion de maintenance peut s'étendre sur plusieurs jours.

Vous pouvez configurer jusqu'à trois exclusions de maintenance à la fois sur un cluster. Vous pouvez les supprimer manuellement, qu'elles aient eu lieu ou non.

Vous pouvez configurer une exclusion de maintenance à l'aide de Google Cloud Console ou de la commande gcloud.

Créer un cluster avec une exclusion de maintenance

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

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

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Configurez le cluster selon vos besoins.

  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 une heure de début et une heure de fin.

  7. Cliquez sur Create (Créer).

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

Configurer une exclusion de maintenance pour un cluster existant

gcloud

Pour configurer une exclusion de maintenance pour un cluster existant, exécutez la commande suivante :

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

Remplacez l'élément suivant :

  • 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.

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 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 une heure de début et une heure de fin.

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

Supprimer une exclusion de maintenance

Un cluster peut contenir jusqu'à trois exclusions de maintenance actives et non écoulées à tout moment.

gcloud

Pour supprimer une exclusion de maintenance existante, exécutez la commande suivante :

gcloud container clusters update cluster-name \
  --remove-maintenance-exclusion exclusion-name

où :

  • cluster-name est le nom du cluster existant.
  • exclusion-name est le 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 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 2019 (29 novembre 2019) et le Cyber Monday 2019 (2 décembre 2019), de minuit sur la côte est (UTC-5) à 23:59:59 sur la côte ouest (UTC-7).

gcloud container clusters update sample-cluster \
 --add-maintenance-exclusion-name black-friday \
 --add-maintenance-exclusion-start 2019-11-29T00:00:00-05:00 \
 --add-maintenance-exclusion-end 2019-12-02T23:59:59-07:00

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

Étape suivante