データベースが Kubernetes クラスタで実行されている場合は、コンテナ化されたアプリケーションで実行される Liveness Probe と Startup Probe を無効にして、データベース Pod が正常な状態であることを確認することで、データベースをメンテナンス モードにできます。メンテナンス モードは、メンテナンス アップデートを行う場合や Pod を修復する必要がある場合に、Pod を実行状態に保つためのものです。
メンテナンス モードを有効にする
データベース Pod に Probe が存在することを確認します。
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}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}
DBCluster マニフェストの
specセクションでmodeをmaintenanceに設定します。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)。次のようにマニフェストを適用します。
kubectl apply -f DB_CLUSTER_YAMLDB_CLUSTER_YAMLは、このデータベース クラスタのマニフェスト ファイルの名前に置き換えます(例:alloydb-omni-db-cluster.yaml)。メンテナンス モードが有効になっていることを確認するには、次のコマンドを実行します。
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_NAMEPod の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}