Usa el modo de mantenimiento en un clúster de bases de datos en Kubernetes

En esta página, se muestra cómo poner la base de datos en modo de mantenimiento en un clúster de Kubernetes.

Si tu base de datos se ejecuta en un clúster de Kubernetes, puedes ponerla en modo de mantenimiento inhabilitando los sondeos de estado y los sondeos de inicio, que se ejecutan en tu aplicación contenedorizada, para asegurarte de que el pod de la base de datos esté en buen estado. El modo de mantenimiento te ayuda a colocar un pod en un estado de ejecución cuando necesitas realizar una actualización de mantenimiento o repararlo.

Habilita el modo de mantenimiento

  1. Verifica que los sondeos existan en un pod de base de datos:

    1. Sondeo de estado en funcionamiento:

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

      Reemplaza lo siguiente:

      • NAMESPACE: Es el nombre de un espacio de nombres que se usa para ejecutar tu base de datos, por ejemplo, db.
      • DATABASE_POD_NAME: Es el nombre del pod de la base de datos, por ejemplo, al-4017-dbcluster-sample-0.

      A continuación, se muestra un resultado de muestra con una prueba de estado:

      {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
      
    2. Sondeo de inicio:

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

      A continuación, se muestra un ejemplo de resultado con una sonda de inicio:

      {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
      
  2. Establece mode en maintenance en la sección spec de tu manifiesto de DBCluster:

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

    Reemplaza DB_CLUSTER_NAME por el nombre de este clúster de bases de datos, por ejemplo, my-db-cluster.

  3. Aplica el manifiesto

    kubectl apply -f DB_CLUSTER_YAML

    Reemplaza DB_CLUSTER_YAML por el nombre de este archivo de manifiesto del clúster de bases de datos, por ejemplo, alloydb-omni-db-cluster.yaml.

  4. Para verificar que el modo de mantenimiento esté habilitado, ejecuta los siguientes comandos:

    • Sondeo de estado en funcionamiento:

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

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

    El resultado no contiene los campos Liveness y Startup en la sección spec de tu pod POD_NAME.

Inhabilita el modo de mantenimiento

Para volver al comportamiento estándar del clúster de bases de datos con pruebas de inicio y actividad en ejecución, usa el siguiente comando para quitar maintenance de la sección spec del manifiesto de DBCluster:

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

Resultados de muestra:

  • Con un sondeo de estado en funcionamiento:

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • Con un sondeo de inicio:

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