LoginSignup
1
2

More than 3 years have passed since last update.

【k8s】Liveness、Readinessの使い方、ベストプラクティス

Last updated at Posted at 2019-09-30

はじめに

ヘルスチェックは、アプリケーションのインスタンスが機能しているかどうかをシステムにお知らせ簡単な方法である

k8sの場合:LivenessとReadinessプローブは、podコンテナー内で実行しているアプリケーションの正常性をチェックするのを利用しています

概要

続いて、LivenessとReadinessプローブはどういう風に機能するかどうかを見てみましょう

Livenessプローブ

定義

Livenessプローブがk8sにアプリが機能しているかどうかをお知らせします。アプリが機能していない場合、k8sがpodを再起動します(pod削除して、新しいpodを立ち上げます)

イメージ

Liveness Concept

解決問題

  • メモリ不足
  • CPU利用率が高い
  • アプリのデッドロック

アプリケーションが応答しない、エラーが発生する時

Readinessプローブ

定義

Readinessプローブがk8sにアプリがトラフィック受付できるかどうかをお知らせします。k8sは、アプリにトラフィック受付するのを許可する前に、Readnessプローブが通過できることを確認します。Readnessプローブが失敗する場合、k8sがアプリにトラフィックを送信することを停止します。

イメージ

Readiness concept

解決問題

  • アプリ起動時間、設定する時間
  • DBの更新

連携するサービス待ち時間など、アプリケーションがReadyにならない時

プローブ書類(タイプ)

HTTP

HTTPプローブは、livenessプローブに一般的なタイプな設定で使われています。
k8sがhttpパスに送信して、返すステータスコードは200か300系だと、成功するとします。そうじゃない場合、失敗とします

参考リンク

Command

k8sがタッゲトコンテナーにコマンドを実行する。実行したコマンドのexit code0場合、成功するとします。そうじゃない場合、失敗とします

参考リンク

TCP

k8sが指定されたポートで接続を確立しようとします。接続が確立できる場合、成功するとします。そうじゃない場合、失敗とします
このタイプは、HTTPプローブとCommandプローブを使えない場合によく使われています

参考リンク

下記の投稿から参考しました
https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-setting-up-health-checks-with-readiness-and-liveness-probes

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2