Kubernetes and Cloud Native Associate 無料問題 9 / 10 ・ 分野3: Cloud Native Application Delivery
一時的な過負荷で、あるコンテナの readiness probe が失敗しはじめた。このとき起きることとして、公式ドキュメントの説明に合うものはどれか。
- Pod のフェーズが Failed に変わり、Deployment がその代わりの Pod を新しく作る
- その Pod の IP が、マッチする Service の EndpointSlice から外される
- kubelet がコンテナを止め、restartPolicy に従って再起動させる
- readiness probe は最初に成功したあとは止まるため、今回の失敗は記録されない
正解と解説を見る
正解: B
正解の理由
readiness probe は、コンテナがトラフィックを受ける準備ができているかを判断する。ページは、readiness probe が失敗の状態を返すと、EndpointSlice コントローラがその Pod の IP アドレスを、Pod にマッチするすべての Service の EndpointSlice から外すと書いている。readiness probe はライフサイクル全体で動くので、一時的な障害や過負荷から戻るときにも役立つ。
違う選択肢
「kubelet がコンテナを止め、restartPolicy に従って再起動させる」… コンテナを止めて再起動の方針に従わせるのは、liveness probe と startup probe が失敗したときの動きである。readiness probe の失敗では、コンテナは止められない。
「Pod のフェーズが Failed に変わり、Deployment がその代わりの Pod を新しく作る」… readiness probe が失敗すると、kubelet はコンテナを準備ができていない(not ready)とし、Pod はマッチする Service からトラフィックを受けなくなる。Pod を失敗させて作り直すわけではない。
「readiness probe は最初に成功したあとは止まるため、今回の失敗は記録されない」… ページは、readiness probe はコンテナのライフサイクル全体を通して動くと書いている。起動の時だけ動くのは startup probe である。
対比
失敗したときの動きは、liveness・startup が「止めて再起動の方針へ」、readiness が「準備ができていないとしてトラフィックを止める」である。過負荷で readiness を落とす使い方は、再起動を増やさずに負荷を逃がせる。