4章Health Probe
Health Probeパターンは、アプリケーションがその稼働状況をKubernetesに対してどのように伝えるのかを表したものです。完全な自動化のため、クラウドネイティブアプリケーションは外部からアプリケーションが起動しているか、リクエストを処理できるかをKubernetesが分かるように、その状態を知れるようにして高度に観測可能な状態にする必要があります。これらの観測結果がPodのライフサイクル管理と、アプリケーションへトラフィックを流す方法に影響を与えます。
4.1 問題
Kubernetesはコンテナプロセスのステータスを定期的にチェックし、問題が検知された場合にはコンテナを再起動します。しかし経験的に私たちは、アプリケーションの稼働状況を知るにはプロセスのステータスをチェックするだけでは十分でないことを知っています。多くの場合、アプリケーションがハングしてもプロセスは起動して動いているのです。例えば、JavaアプリケーションがOutOfMemoryErrorを投げても、JVMプロセスはまだ動いています。あるいは、無限ループ、デッドロック、その他のスラッシング(キャッシュ、ヒープ、プロセスなど)が発生することによってアプリケーションがフリーズするかもしれません。これらの状況を検知するために、アプリケーションの稼働状況をチェックする信頼できる仕組みがKubernetesには必要です。つまり、アプリケーションが内部的にどう動いているのかを理解するためではなく、アプリケーションが期待どおりに動作しており、利用者にサービスを提供する能力があるかをチェックするための仕組みです。
4.2 解決策
ソフトウェア業界では、バグがないコードを書くのは不可能であるという事実を受け入れてきました。分散アプリケーションを作る時には、バグがないどころか、問題の発生頻度はさらに高くなります。その結果、障害対応の焦点は、障害を避けることから障害を検知し復帰することに移ってきています。障害に対する定義は人それぞれなので、障害の検知と言ってもどんなアプリケーションでも同じようにできる単純なタスクではありません。また、障害の種類によって復帰に必要とされるアクションも異なります。十分な時間があれば一時的な障害は自己修復可能かもしれません。それ以外の障害はアプリケーションの再起動が必要かもしれません。障害を検知し、修正を行うためにKubernetesが使用するチェックについて見ていきましょう。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access