Monitoring with Postflight checks#

Postflight チェックの結果を確認して、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` に移行すると、ステータスがすぐに更新されます。間隔は、システムが正常な場合の再チェックのリズムにのみ影響します。 !!!