Monitoring with Postflight checks#
Postflight
チェックの結果を確認して、HM展開の準備ができていることを監視します。
重点ロール インフラストラクチャエンジニア/プラットフォーム管理者
前提条件#
フェーズ5ハイブリッドマネージャーのインストール — HMのインストールが完了および確認できました。展開が実行されており、その状態を確認するか、失敗したチェックのトラブルシューティングを行う必要があります。
結果#
** 展開されたハイブリッドマネージャーHMプラットフォームが正常で、2日目構成の準備ができていることの確認。*
Postflight カスタムリソースは、展開されたHMスタックの自動ヘルスモニタリングを提供します。一連のビルトインチェックを定期的に実行し、全体的な状態を報告します。
注釈
Understanding Preflight checks とは異なり、 postflightはモニタリング機能を提供します。操作をブロックせず、自動修復をトリガーしません。トラブルシューティングの可視性を提供します。 !!!
ポストフライトチェックの機能#
オペレーターは、 Postflight
リソースを使用して、構成可能な間隔で5つのビルトインヘルスチェックを実行します。チェックは、
HybridControlPlane がdeployed
フェーズに到達した後にのみ開始されます。各チェックは、ランニングプラットフォームのさまざまな側面を検証します。
Check |
What it verifies |
|---|---|
Pods |
All HM pods are running and ready. |
Databases |
All internal EDB Postgres for Kubernetes clusters are ready and their latest backups completed. |
Velero backups |
The latest Velero backup completed successfully. |
Nodes |
All Kubernetes cluster nodes are ready. |
Certificates |
All cert-manager certificates are valid and ready. |
all チェックがパスした場合、全体的なフェーズはHealthy です。
任意の チェックが失敗した場合、フェーズはUnhealthy です。
ポストフライトステータスの確認#
概要#
インストールが正常かどうかを確認します。
kubectl get postflight
出力は次のようになります。
NAME PHASE LAST CHECK
edbpgai-postflight Healthy 2025-01-15T10:30:00Z
詳細な結果#
フェーズがUnhealthy の場合、より詳細な結果を取得します。
kubectl get postflight <name> -o yaml
status.checkResults セクションには、個々の結果が表示されます。
status:
phase: Unhealthy
lastTransitionTime: "2025-01-15T10:30:00Z"
checkResults:
- name: PodsChecker
description: "Check whether all pods belonging to the Hybrid Manager are ready."
state: Passed
- name: DBsChecker
description: "Check whether all internal databases belonging to the Hybrid Manager are ready."
state: Passed
- name: VeleroChecker
description: "Check whether the latest Velero Backup has been completed."
state: Failed
messages:
- "the latest velero backup is in a unhealthy phase: PartiallyFailed"
- name: NodesChecker
description: "Check whether all nodes are ready."
state: Passed
- name: CertificatesChecker
description: "Check whether all certificates belonging to the Hybrid Manager are valid."
state: Passed
異常なチェックのトラブルシューティング#
ポストフライトフェーズがUnhealthy の場合、 status.checkResults
セクションを検査して、失敗したチェックとそれに関連するメッセージを特定します。
ポッドチェックが失敗する#
1つ以上のHMポッドが準備完了状態にありません。障害が発生したポッドを調査します。
kubectl get pods -A | grep -v Running
kubectl describe pod <pod-name> -n <namespace>
kubectl logs <pod-name> -n <namespace>
一般的な原因には、イメージのプルの失敗、リソース制限、コンテナのクラッシュループが含まれます。
データベースチェックが失敗する#
KubernetesデータベースクラスターのEDB Postgresの準備ができていないか、最新のバックアップに失敗しました。クラスターとバックアップのステータスを確認します。
kubectl get clusters.postgresql.k8s.enterprisedb.io -A
kubectl get backups.postgresql.k8s.enterprisedb.io -A --sort-by=.metadata.creationTimestamp
一般的な原因には、ストレージの問題、接続障害、WALアーカイブの問題が含まれます。
Veleroバックアップチェックが失敗します#
最新のVeleroバックアップは、障害または部分的に障害が発生した状態です。
kubectl get backups.velero.io -n velero --sort-by=.metadata.creationTimestamp
kubectl describe backup <backup-name> -n velero
ノードチェックが失敗する#
1つ以上のクラスターノードの準備ができていません。これは、HMだけでなくクラスター全体に影響します。
kubectl get nodes
kubectl describe node <node-name>
一般的な原因には、ディスク圧力、メモリ圧力、ネットワーク到達不能状態、およびkubeletの問題が含まれます。
証明書チェックが失敗します#
cert-manager証明書は発行されていないか、有効期限が切れています。
kubectl get certificates -A
kubectl describe certificate <cert-name> -n <namespace>
kubectl get certificaterequests -A
一般的な原因には、発行者の構成の問題、レート制限ACME / Let’s Encryptの場合、およびDNS検証の失敗が含まれます。
チェック間隔の設定#
ポストフライトチェックが実行される間隔を変更することもできます。
spec.interval
フィールドは、チェックを実行する頻度を制御します。フェーズがHealthy
の場合、オペレーターはこの間隔を尊重し、実行が成功するたびに残りの期間を再キューイングします。
apiVersion: edbpgai.edb.com/v1alpha1
kind: Postflight
metadata:
name: edbpgai-postflight
spec:
hm:
name: edbpgai
interval: 30m
注釈
フェーズが`Unhealthy` に移行すると、ステータスがすぐに更新されます。間隔は、システムが正常な場合の再チェックのリズムにのみ影響します。 !!!