Utilizzare la modalità di manutenzione su un cluster di database in Kubernetes

Questa pagina mostra come mettere il database in modalità di manutenzione in un cluster Kubernetes.

Se il database viene eseguito in un cluster Kubernetes, puoi metterlo in modalità di manutenzione disattivando i probe di attività e i probe di avvio, che vengono eseguiti nell'applicazione containerizzata, per assicurarti che il pod del database sia in uno stato corretto. La modalità di manutenzione ti consente di mettere un pod in stato di esecuzione quando devi eseguire un aggiornamento di manutenzione o riparare il pod.

Attivare la modalità di manutenzione

  1. Verifica che i controlli esistano in un pod di database:

    1. Probe di attività:

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

      Sostituisci quanto segue:

      • NAMESPACE: il nome di un ambito utilizzato per eseguire il database, ad esempio db.
      • DATABASE_POD_NAME: il nome del pod del database, ad esempio al-4017-dbcluster-sample-0.

      Di seguito è riportato un output di esempio con un probe di attività:

      {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
      
    2. Probe di avvio:

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

      Di seguito è riportato un output di esempio con un'indagine di avvio:

      {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
      
  2. Imposta mode su maintenance nella sezione spec del manifest DBCluster:

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

    Sostituisci DB_CLUSTER_NAME con il nome di questo cluster di database, ad esempio my-db-cluster.

  3. Applica il manifest:

    kubectl apply -f DB_CLUSTER_YAML

    Sostituisci DB_CLUSTER_YAML con il nome del file manifest del cluster di database, ad esempio alloydb-omni-db-cluster.yaml.

  4. Per verificare che la modalità di manutenzione sia attiva, esegui i seguenti comandi:

    • Probe di attività:

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

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

    L'output non contiene i campi Liveness e Startup nella sezione spec del pod POD_NAME.

Disattivare la modalità di manutenzione

Per tornare al comportamento standard del cluster di database con i controlli di attivazione e attività in esecuzione, utilizza il seguente comando per rimuovere maintenance dalla sezione spec del manifest DBCluster:

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

Output di esempio:

  • Con un probe di attività:

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • Con una sonda di avvio:

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