Utiliser le mode de maintenance sur un cluster de base de données dans Kubernetes

Sélectionnez une version de la documentation :

Cette page vous explique comment mettre la base de données en mode maintenance dans un cluster Kubernetes.

Si votre base de données s'exécute dans un cluster Kubernetes, vous pouvez la mettre en mode maintenance en désactivant les vérifications de l'état et les vérifications de démarrage qui s'exécutent sur votre application conteneurisée. Vous vous assurez ainsi que le pod de la base de données est en bon état. Le mode maintenance vous permet de placer un pod en état d'exécution lorsque vous devez effectuer une mise à jour de maintenance ou réparer le pod.

Activer le mode de maintenance

  1. Vérifiez que des sondes existent sur un pod de base de données :

    1. Vérification de l'activité :

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'

      Remplacez les éléments suivants :

      • NAMESPACE : nom d'un espace de noms utilisé pour exécuter votre base de données (par exemple, db).
      • DATABASE_POD_NAME : nom du pod de base de données, par exemple al-4017-dbcluster-sample-0.

      Voici un exemple de résultat avec une sonde de vivacité :

      {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
      
    2. Vérification du démarrage :

      kubectl get po -n NAMESPACE DATABASE_POD_NAME -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'

      Voici un exemple de résultat avec une sonde de démarrage :

      {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
      
  2. Définissez mode sur maintenance dans la section spec du fichier manifeste DBCluster :

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
      namespace: NAMESPACE
    spec:
      allowExternalIncomingTraffic: false
      isDeleted: false
      mode: maintenance
      primarySpec:
      ...
    

    Remplacez DB_CLUSTER_NAME par le nom de ce cluster de bases de données, par exemple my-db-cluster.

  3. Appliquez le fichier manifeste :

    kubectl apply -f DB_CLUSTER_YAML

    Remplacez DB_CLUSTER_YAML par le nom du fichier manifeste de ce cluster de bases de données, par exemple alloydb-omni-db-cluster.yaml.

  4. Pour vérifier que le mode maintenance est activé, exécutez les commandes suivantes :

    • Vérification de l'activité :

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'
    • Vérification du démarrage :

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'

    La sortie ne contient pas les champs Liveness et Startup dans la section spec de votre pod POD_NAME.

Désactiver le mode de maintenance

Pour revenir au comportement standard du cluster de base de données avec des sondes de vivacité et de démarrage en cours d'exécution, utilisez la commande suivante pour supprimer maintenance de la section spec de votre fichier manifeste DBCluster :

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"mode":""}}' --type=merge -n DB_CLUSTER_NAMESPACE --type=merge

Exemples de résultats :

  • Avec une vérification d'activité :

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • Avec une vérification du démarrage :

    {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,  "periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}