Wartungsmodus für einen Datenbankcluster in Kubernetes verwenden

Auf dieser Seite erfahren Sie, wie Sie die Datenbank in einem Kubernetes-Cluster in den Wartungsmodus versetzen.

Wenn Ihre Datenbank in einem Kubernetes-Cluster ausgeführt wird, können Sie sie in den Wartungsmodus versetzen, indem Sie die Aktivitätsprüfungen und Startprüfungen deaktivieren, die in Ihrer containerisierten Anwendung ausgeführt werden. So können Sie dafür sorgen, dass der Datenbank-Pod in einem fehlerfreien Zustand ist. Mit dem Wartungsmodus können Sie einen Pod in den Status „Laufend“ versetzen, wenn Sie ein Wartungsupdate durchführen oder den Pod reparieren müssen.

Wartungsmodus aktivieren

  1. Prüfen Sie, ob es in einem Datenbank-Pod Prüfen gibt:

    1. Aktivitätsprüfung:

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

      Ersetzen Sie Folgendes:

      • NAMESPACE: der Name eines Namespaces, der zum Ausführen Ihrer Datenbank verwendet wird, z. B. db.
      • DATABASE_POD_NAME: der Name des Datenbank-Pods, z. B. al-4017-dbcluster-sample-0.

      Im Folgenden sehen Sie eine Beispielausgabe mit einem Liveness-Test:

      {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
      
    2. Startprüfung:

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

      Im Folgenden sehen Sie eine Beispielausgabe mit einer Startprüfung:

      {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
      
  2. Legen Sie im Abschnitt spec des DBCluster-Manifests mode auf maintenance fest:

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

    Ersetzen Sie DB_CLUSTER_NAME durch den Namen dieses Datenbankclusters, z. B. my-db-cluster.

  3. Wenden Sie das Manifest an:

    kubectl apply -f DB_CLUSTER_YAML

    Ersetzen Sie DB_CLUSTER_YAML durch den Namen der Manifestdatei dieses Datenbankclusters, z. B. alloydb-omni-db-cluster.yaml.

  4. Führen Sie die folgenden Befehle aus, um zu prüfen, ob der Wartungsmodus aktiviert ist:

    • Aktivitätsprüfung:

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

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

    Die Ausgabe enthält im Abschnitt spec des POD_NAME-Pods nicht die Felder Liveness und Startup.

Wartungsmodus deaktivieren

Wenn Sie zum Standardverhalten des Datenbankclusters mit laufenden Liveliness- und Start-Prüfungen zurückkehren möchten, entfernen Sie maintenance mit dem folgenden Befehl aus dem Abschnitt spec des DBCluster-Manifests:

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

Beispielausgaben:

  • Mit einer Aktivitätsprüfung:

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • Mit einer Startprüfung:

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