クラウドとコンテナの基礎
readinessProbe:
httpGet:
path: /ready
port: 8080
periodSeconds: 5あるWebアプリケーションは、起動してからキャッシュを読み込むまでの約60秒間は要求を処理できず、その間は /ready に503を返す。Podのコンテナに上の設定を加えたときの効果として、正しいものはどれか。
- A/ready が失敗している間、PodはServiceの振り分け先から外されて要求が送られず、コンテナは再起動されない
- B/ready が失敗するたびにコンテナが再起動されるので、キャッシュの読み込みが終わる前に再起動がくり返される
- C/ready が成功するまで、Podはどのノードにも割り当てられず、コンテナも起動されない
答えと解説を見る
正解:A. /ready が失敗している間、PodはServiceの振り分け先から外されて要求が送られず、コンテナは再起動されない
readinessプローブは、コンテナが要求を受け付けられる状態かどうかを調べ、失敗している間はそのPodをServiceの振り分け先から外します。HTTPのプローブでは200以上400未満の応答を成功とみなすので、503を返している間は振り分けられず、準備ができてから要求が届くようになります。失敗したときにコンテナを再起動するのは livenessプローブの働きで、起動に時間がかかるアプリケーションに短い間隔の livenessプローブだけを設定すると、再起動がくり返されることがあります。Podをどのノードで動かすかは、プローブではなくスケジューラが決めます。
- A. 正しい。readinessプローブは、要求を振り分けるかどうかを決めます。
- B. 失敗したときに再起動するのは livenessプローブです。readinessプローブの失敗では再起動されません。
- C. プローブは、ノードに割り当てられて起動したコンテナに対して行われます。割り当てはスケジューラが決めます。