Kubernetes のデータベース クラスタでメンテナンス モードを使用する

ドキュメントのバージョンを選択してください。

このページでは、Kubernetes クラスタでデータベースをメンテナンス モードにする方法について説明します。

データベースが Kubernetes クラスタで実行されている場合は、コンテナ化されたアプリケーションで実行される Liveness ProbeStartup Probe を無効にして、データベース Pod が正常な状態であることを確認することで、データベースをメンテナンス モードにできます。メンテナンス モードは、メンテナンス アップデートを行う場合や Pod を修復する必要がある場合に、Pod を実行状態に保つためのものです。

メンテナンス モードを有効にする

  1. データベース Pod に Probe が存在することを確認します。

    1. Liveness Probe:

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

      次のように置き換えます。

      • NAMESPACE: データベースの実行に使用される Namespace の名前(例: db)。
      • DATABASE_POD_NAME: データベース Pod の名前(例: al-4017-dbcluster-sample-0)。

      Liveness Probe を使用した出力例を次に示します。

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

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

      Startup Probe を使用した出力例を次に示します。

      {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
      
  2. DBCluster マニフェストの spec セクションで modemaintenance に設定します。

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

    DB_CLUSTER_NAME は、このデータベース クラスタの名前に置き換えます(例: my-db-cluster)。

  3. 次のようにマニフェストを適用します。

    kubectl apply -f DB_CLUSTER_YAML

    DB_CLUSTER_YAML は、このデータベース クラスタのマニフェスト ファイルの名前に置き換えます(例: alloydb-omni-db-cluster.yaml)。

  4. メンテナンス モードが有効になっていることを確認するには、次のコマンドを実行します。

    • Liveness Probe:

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

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

    出力の POD_NAME Pod の spec セクションに Liveness フィールドと Startup フィールドが含まれていません。

メンテナンス モードを無効にする

実行中の Liveness Probe と Startup Probe を使用して標準のデータベース クラスタの動作に戻すには、次のコマンドを使用し、DBCluster マニフェストの spec セクションから maintenance を削除します。

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

出力例:

  • Liveness Probe を使用する場合:

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • Startup Probe を使用する場合:

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