SpringBoot シリーズ--[K8s の SpringBoot はアプリケーションのヘルス チェックをどのように構成しますか? 】

K8s の SpringBoot はアプリケーションのヘルスチェックをどのように構成しますか?

1. 健康診断の必要性

ビジネス監視の主な目的として、サービスの存続可能性、つまり健全性状態が最優先事項となっており、コンテナ クラウド プラットフォームは、ヘルス チェック ポリシーに従って、サービス インスタンスを自動的に再起動したり、負荷分散からサービス インスタンスを削除したりできます。

2. K8s ヘルスチェックプローブ

オーケストレーション プラットフォームとして Kubernetes を使用する場合、各ノードの kubelet は、そのノードのポッドを正常に保つ役割を果たします。たとえば、アプリケーションがリクエストを受け入れるまでに時間がかかる場合があります。kubelet は、アプリケーションが準備ができた場合にのみリクエストを受信するようにします。さらに、Pod のマスター プロセスが何らかの理由でクラッシュした場合、kubelet はコンテナを再起動します。これらの責任を果たすために、Kubernetes には liveness プローブ (livenessProbe)、readiness プローブ (readinessProbe)、および起動プローブ (startupProbe) の 3 つのプローブがあります。

  • ライブネス:
    アプリケーションに関する限り、ライブネスとはアプリケーションの状態が正常かどうかを指します。生存状態が正常でない場合は、アプリケーション自体が破損しており、復旧できないことを意味します。Kubernetes では、liveness プローブが失敗すると、kubelet がコンテナを強制終了し、コンテナは再起動ポリシーを受け入れます。コンテナーが liveness プローブを提供しない場合、デフォルトのステータスは「成功」です。
  • 準備状況: 準備状況とは、
    アプリケーションがクライアント要求を受け入れて処理する準備ができているかどうかを指します。何らかの理由で、アプリケーションがリクエストを処理する準備ができていない場合は、リクエストに正常に応答できるようになるまで、アプリケーションはビジーであると宣言する必要があります。「Readiness」状態の準備ができていない場合は、トラフィックをインスタンスにルーティングしないでください。
    たとえば、Kubernetes では、readiness Probe が失敗すると、エンドポイント コントローラーはエンドポイントからポッドの IP アドレスを削除します。準備状態を「失敗」に設定します。コンテナーが readiness プローブを提供しない場合、デフォルトの状態は「成功」です。
    kubelet は、readiness プローブを使用して、アプリケーションがリクエストをいつ受け入れる準備ができているかを判断します。より具体的には、すべてのコンテナーの準備が完了すると、ポッドの準備が整います。同様に、kubelet は liveness プローブを介してポッドが生きているかどうかを確認できます。これは、kubelet がコンテナをいつ再起動する必要があるかを知るのに役立ちます。
  • 起動プローブ (startupProbe): この号では、当面は起動プローブについては説明しません。これについては後ほど説明します。

3. Springboot 構成のヘルスチェック

SpringBoot は、単純なパラメータを通じてヘルスチェックを可能にし、主流の監視システムと統合できます。今日は、Actuator の監視と管理におけるヘルス チェック機能に焦点を当てます。オンライン アプリケーション、特に人気のあるコンテナ クラウド プラットフォーム下のアプリケーションのヘルス ステータスを常に把握することは非常に重要です。アプリケーションの自動回復と拡張は、ヘルス チェック機能に依存しています。
まず、次の図に示すように、pom ファイルに spring-boot-starter-actuator コンポーネントを追加する必要があります: 次に、構成
監視エンドポイントを構成ファイルに追加します。デフォルトでは、これらのエンドポイントは無効になっています。
ブラウザまたは postman に「service ip:port/actuator/health」と入力して、戻り結果があるかどうかを確認します。次の図に示すように、戻り結果が UP (ステータス コードが 200 ~ 400) の場合、サービスは正常です。残りの戻り結果は DOWN で、サービスは異常です。

おすすめ

転載: blog.csdn.net/weixin_44988127/article/details/131821701
おすすめ