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

Selecciona una versión de la documentación:

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 las pruebas de actividad y las pruebas de inicio, que se ejecutan en tu aplicación en contenedores, para asegurarte de que el pod de la base de datos esté en buen estado. El modo de mantenimiento te permite poner un pod en estado de ejecución cuando necesites hacer una actualización de mantenimiento o reparar el pod.

Habilitar el modo de mantenimiento

  1. Verifica que haya sondas en un pod de base de datos:

    1. Comprobación de actividad:

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

      Haz los cambios siguientes:

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

      A continuación se muestra un ejemplo de salida con una sonda de actividad:

      {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
      
    2. Comprobación 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 salida 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. Asigna el valor maintenance a mode en la sección spec del archivo de 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:
      ...
    

    Sustituye DB_CLUSTER_NAME por el nombre de este clúster de base de datos; por ejemplo, my-db-cluster.

  3. Aplica el archivo de manifiesto:

    kubectl apply -f DB_CLUSTER_YAML

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

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

    • Comprobación de actividad:

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

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

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

Inhabilitar el modo de mantenimiento

Para volver al comportamiento estándar del clúster de base de datos con las sondas de actividad y de inicio 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

Ejemplos de resultados:

  • Con una comprobación de actividad:

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • 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}