Declarative hibernation ======================= .. raw:: html CloudNativePGは、PostgreSQLクラスターを起動、実行、いつでも利用できるように設計されています。 一部の種類のワークロードは、ワークロードがアクティブなときにのみデータベースを起動する必要があります。バッチ駆動のソリューションは、そのようなケースの1つです。 バッチ駆動ソリューションでは、バッチプロセスの実行中にのみデータベースを起動する必要があります。 宣言的ハイバーネーション機能を使用すると、データベースPVCを維持したままデータベースポッドを削除することにより、CPUパワーを節約できます。 ハイバネーション ---------------- クラスターを休止状態にするには、 ``cnpg.io/hibernation=on`` アノテーションを設定します。 .. code:: sh $ kubectl annotate cluster --overwrite cnpg.io/hibernation=on 冬眠したクラスターには実行中のポッドはありませんが、 PVCは保持されるため、後でクラスターをリハイドレートできます。レプリカPVCは、プライマリのPVCに加えて保持されます。 ハイバーネーションプロシージャは、プライマリポッドを削除してからレプリカポッドを削除し、スイッチオーバーを回避して、レプリカの同期が保たれるようにします。 ハイバーネーションステータスは、 ``cnpg.io/hibernation`` 条件を探すことにより監視できます。 .. code:: sh $ kubectl get cluster -o "jsonpath={.status.conditions[?(.type==\"cnpg.io/hibernation\")]}" { "lastTransitionTime":"2023-03-05T16:43:35Z", "message":"Cluster has been hibernated", "reason":"Hibernated", "status":"True", "type":"cnpg.io/hibernation" } ハイバーネーションステータスは、\ ``kubectl`` の\ ``cnpg`` プラグインの\ ``status`` サブコマンドで読み取ることもできます。 .. code:: sh $ kubectl cnpg status Cluster Summary Name: cluster-example Namespace: default PostgreSQL Image: ghcr.io/cloudnative-pg/postgresql:18.1-system-trixie Primary instance: cluster-example-2 Status: Cluster in healthy state Instances: 3 Ready instances: 0 Hibernation Status Hibernated Message Cluster has been hibernated Time 2023-03-05 16:43:35 +0000 UTC [..] Rehydration -------- クラスターをrehydrateには、 ``cnpg.io/hibernation`` アノテーションを\ ``off`` に設定します。 :: $ kubectl annotate cluster --overwrite cnpg.io/hibernation=off または、完全に設定を解除します。 :: $ kubectl annotate cluster cnpg.io/hibernation- ポッドが再作成され、クラスターがオペレーションを再開します。