はじめに
ヘルスチェックは、アプリケーションのインスタンスが機能しているかどうかをシステムにお知らせ簡単な方法である
k8sの場合:LivenessとReadinessプローブは、podコンテナー内で実行しているアプリケーションの正常性をチェックするのを利用しています
概要
続いて、LivenessとReadinessプローブはどういう風に機能するかどうかを見てみましょう
Livenessプローブ
定義
Livenessプローブがk8sにアプリが機能しているかどうかをお知らせします。アプリが機能していない場合、k8sがpodを再起動します(pod削除して、新しいpodを立ち上げます)
イメージ
解決問題
- メモリ不足
- CPU利用率が高い
- アプリのデッドロック
アプリケーションが応答しない、エラーが発生する時
Readinessプローブ
定義
Readinessプローブがk8sにアプリがトラフィック受付できるかどうかをお知らせします。k8sは、アプリにトラフィック受付するのを許可する前に、Readnessプローブが通過できることを確認します。Readnessプローブが失敗する場合、k8sがアプリにトラフィックを送信することを停止します。
イメージ
解決問題
- アプリ起動時間、設定する時間
- DBの更新
連携するサービス待ち時間など、アプリケーションがReadyにならない時
プローブ書類(タイプ)
HTTP
HTTPプローブは、livenessプローブに一般的なタイプな設定で使われています。
k8sがhttpパスに送信して、返すステータスコードは200か300系だと、成功するとします。そうじゃない場合、失敗とします
参考リンク
Command
k8sがタッゲトコンテナーにコマンドを実行する。実行したコマンドのexit code
は0
場合、成功するとします。そうじゃない場合、失敗とします
参考リンク
TCP
k8sが指定されたポートで接続を確立しようとします。接続が確立できる場合、成功するとします。そうじゃない場合、失敗とします
このタイプは、HTTPプローブとCommandプローブを使えない場合によく使われています
参考リンク