0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kubernetes中級(2):Pod-ReadinessProbe, LivenessProbe概要

Last updated at Posted at 2020-07-27
1.png Podを作成すると、その中にContainerが作成されてPodとContainerの状態がRunningになって、ContainerのAppも正常に稼働される。 そしてPodとServiceが接続されてServiceのIPアドレスからユーザーがリアルタイムでアクセスが可能になる。 3.png 上の図のように1つのServiceに2つのPodが繋がっていて50%ずつTrafficを分散していると仮定したとき、もしNode2サーバーが落ちた場合は全てのユーザーはNode1に接続されることになる。 そして落ちたPodはAutoHealing機能によって他のNodeであるNode3に再生成される。 再生成される間にContainerはRunning状態になってServiceと接続されたが、Appがまだ起動中の場合がある。 Serviceと接続しているのでTrafficがPod2の方に流れて行くとAppはまだ起動中なのでTrafficエラーになってしまう。 4.png Podを作成するときに「ReadinessProbe」を指定すると上記の問題を避けることができる。 「ReadinessProbe」はAppが起動されるまでにはServiceと繋がらないようにしてくれるのでPod2の状態はRunningであるが、TrafficはPod1に行くようになる。 AppがRunning状態になったらServiceと接続されてTrafficは50:50になる。 7.png Pod2のAppは落ちたがPod2はRunning状態、例えばWeb ServiceのTomcatは正常に稼動しているが、その上で動くAppがメモリオーバーフローなどの問題で500サーバーエラーを返すことがある。 Tomcat自体のプロセスが落ちたのではなく、Tomcat上で稼働しているサービスの問題なので、Tomcatのプロセスを見ているPodはRunning状態になるのでTrafficは入ってくる問題が発生してしまう。 この時、Appの障害を検知してくれる機能が「LivenessProbe」だ。 Podを作成するときに「LivenessProbe」を指定すると、そのAppに問題が発生した場合はPodを再実行させて、一瞬のTrafficエラーは発生するが、エラー状態が続くのを防いでくれる。 安定したServiceを提供するために「ReadinessProbe」を使ってAppが稼動している間のTrafficの失敗をなくして、「LivenessProbe」を使ってAppの問題を検知して障害状態が長くなることをPodを作成するときに設定することで防げる。
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?