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

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 sondes d'activité et les sondes de démarrage, qui s'exécutent sur votre application conteneurisée, pour vous assurer que le pod de base de données est en bon état. Le mode de 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 sortie avec une sonde de disponibilité:

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

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

      Voici un exemple de sortie 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 de votre 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 de ce fichier manifeste de cluster de base de données (par exemple, alloydb-omni-db-cluster.yaml).

  4. Pour vérifier que le mode de 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 de 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 vitalité 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 de l'activité:

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

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