翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
プローブとロードバランサーのヘルスチェックを設定する
Kubernetes には、ロードバランサーのヘルスチェックに加えて、アプリケーションのヘルスチェックを実行する方法がいくつか用意されています。次の Kubernetes 組み込みプローブとロードバランサーのヘルスチェックを、ポッドのコンテキストのコマンドとして、または kubelet またはホスト IP アドレスへの HTTP/TCP プローブとして実行できます。
ライブネスプローブと準備状況プローブは、異なる独立した (または少なくとも異なるタイムアウト値を持つ) 必要があります。アプリケーションに一時的な問題がある場合、準備状況プローブは問題が解決されるまでポッドを準備中としてマークします。livenss プローブの設定が正しくない場合、liveness プローブはポッドを終了することがあります。
起動プローブ
スタートアッププローブを使用して、初期化サイクルが長いアプリケーションを保護します。起動プローブが成功するまで、他のプローブは無効になります。
Kubernetes がアプリケーションの起動を待機する最大時間を定義できます。最大設定時間が経過してもポッドが起動プローブに失敗した場合、アプリケーションは終了し、新しいポッドが作成されます。
アプリケーションの起動時間が予測不可能な場合は、起動プローブを使用します。アプリケーションの起動に 10 秒かかることがわかっている場合は、initialDelaySeconds
代わりに でライブネスプローブまたは準備状況プローブを使用します。
Liveness プローブ
Liveness プローブを使用して、アプリケーションの問題や、プロセスが問題なく実行されているかどうかを検出します。ライブネスプローブは、プロセスが実行され続けるがアプリケーションが応答しなくなるデッドロック状態を検出できます。ライブネスプローブを使用する場合は、次の操作を行います。
-
を使用して
initialDelaySeconds
最初のプローブを遅延させます。 -
ライブネスプローブと準備状況プローブに同じ仕様を設定しないでください。
-
ポッドの外部にある要素 (データベースなど) に依存するようにライブネスプローブを設定しないでください。
-
特定の のライブネスプローブを設定します
terminationGracePeriodSeconds
。詳細についてはKubernetes ドキュメントを参照してください。
準備状況プローブ
準備状況プローブを使用して以下を検出します。
-
アプリケーションがトラフィックを受け入れる準備ができているかどうか
-
部分的な可用性。アプリケーションは一時的に使用できない場合がありますが、特定のオペレーションの完了後に再び正常になると予想されます。
準備状況プローブは、アプリケーションがトラフィックを処理できるように、アプリケーション設定と依存関係が問題やエラーなしで実行されていることを確認するのに役立ちます。ただし、準備状況プローブの設定が不十分な場合、準備状況プローブが停止するのを防ぎません。データベースへの接続などの外部要因に依存する準備プローブは、すべてのポッドがプローブに失敗する可能性があります。このような障害が発生すると停止し、バックエンドサービスから、障害が発生したポッドを使用した他のサービスへのカスケード障害が発生する可能性があります。
Ingress リソースとロードバランサーのヘルスチェック
Application Load Balancer と Kubernetes ingress
にはヘルスチェック機能があります。Application Load Balancer のヘルスチェックでは、ターゲットポートとパスを指定します。
注: Kubernetes の場合ingress
、登録解除のレイテンシーが発生します。Application Load Balancer のデフォルトは 300 秒です。準備状況プローブに使用したのと同じ値を使用して、イングレスリソースまたはロードバランサーのヘルスチェックを設定することを検討してください。
NGINX はヘルスチェックも提供します。詳細については、NGINX ドキュメント
Istio イングレスゲートウェイとエグレスゲートウェイには、NGINX からの HTTP ヘルスチェックと同等のヘルスチェックメカニズムはありません。ただし、Istio サーキットブレーカーDestinationRule
外れ値検出を使用すると、同様の機能を実現できます。
詳細については、「EKS Best Practices – Load Balancing (Availability and Pod Lifecycle)