Skip to content
Latchkey

liveness probe とは?スタックしたコンテナを再起動する

liveness probe とは、コンテナがハングしていて再起動すべきかを Kubernetes が判断するために使う、定期的なヘルスチェックです。

プロセスは実行中でも、行き詰まっていることがあります - デッドロック、無限ループにはまる、回復不能になる、など。外から見ると生きているように見えますが、何も提供しません。liveness probe は、Kubernetes がそれを検知してコンテナを自動的に再起動する手段を与え、スタックしたアプリを自己修復するものに変えます。

仕組み

probe(HTTP、TCP、またはコマンド)を定義し、Kubernetes がそれを一定間隔で実行します。連続して十分な回数失敗すると、Kubernetes はコンテナを kill し、pod の restart policy に従って再起動します。

liveness と readiness の違い

readiness はトラフィックを制御し、liveness は再起動を制御します。pod は生きているが準備できていない(まだ温まっている)ことがあります - つまり2つの probe は異なる仕事を担い、しばしば両方が定義されます。

restart loop を避ける

  • 起動が遅いものが早すぎるうちに kill されないよう、初期遅延を設定する。
  • probe を安価にし、downstream サービスから独立させる。
  • 攻めすぎた probe は crash loop を引き起こす - しきい値を慎重に調整する。

よくある落とし穴

liveness probe が一時的にダウンしたデータベースに依存していると、すべての pod が一斉に再起動し、何も回復しません。liveness の check はプロセスに対してローカルに保ち、依存関係の健全性には readiness を使いましょう。

信頼性との対応

liveness probe は自己修復を体現します。スタックした workload を検知し、自動的に回復するのです。マネージド CI runner は同じ哲学を job に適用します - 一時的な障害やリソース障害から、スタックしたまま放置するのではなく自動的に回復します。

重要なポイント

  • liveness probe は、実行中だがハングしたコンテナを再起動します。
  • liveness は再起動を制御し、readiness はトラフィックを制御します - 両方を使いましょう。
  • 同期した restart loop を避けるため、probe は安価でローカルに保ちましょう。

関連ガイド