クラウドとコンテナの基礎

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  periodSeconds: 5

あるWebアプリケーションは、起動してからキャッシュを読み込むまでの約60秒間は要求を処理できず、その間は /ready に503を返す。Podのコンテナに上の設定を加えたときの効果として、正しいものはどれか。

  1. A/ready が失敗している間、PodはServiceの振り分け先から外されて要求が送られず、コンテナは再起動されない
  2. B/ready が失敗するたびにコンテナが再起動されるので、キャッシュの読み込みが終わる前に再起動がくり返される
  3. C/ready が成功するまで、Podはどのノードにも割り当てられず、コンテナも起動されない
答えと解説を見る

正解:A. /ready が失敗している間、PodはServiceの振り分け先から外されて要求が送られず、コンテナは再起動されない

readinessプローブは、コンテナが要求を受け付けられる状態かどうかを調べ、失敗している間はそのPodをServiceの振り分け先から外します。HTTPのプローブでは200以上400未満の応答を成功とみなすので、503を返している間は振り分けられず、準備ができてから要求が届くようになります。失敗したときにコンテナを再起動するのは livenessプローブの働きで、起動に時間がかかるアプリケーションに短い間隔の livenessプローブだけを設定すると、再起動がくり返されることがあります。Podをどのノードで動かすかは、プローブではなくスケジューラが決めます。

  • A. 正しい。readinessプローブは、要求を振り分けるかどうかを決めます。
  • B. 失敗したときに再起動するのは livenessプローブです。readinessプローブの失敗では再起動されません。
  • C. プローブは、ノードに割り当てられて起動したコンテナに対して行われます。割り当てはスケジューラが決めます。
この分野を解く 分野ページへ

クラウドとコンテナの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

クラウドとコンテナの基礎のほかの問題

  1. KubernetesのWebアプリケーションで、livenessプローブの確認の処理の中で、依存先のデータベースに接続できるかまで調べるようにした。この設定で起こりうる問題として、最も適切なものはどれか。
  2. KubernetesのHorizontalPodAutoscalerで、PodのCPU使用率の目標を70%、Podの数の範囲を1〜10とした。いま5つのPodの平均のCPU使用率が30%である。必要なPodの数を ⌈現在の数 × 現在の使用率 ÷ 目標の使用率⌉(⌈ ⌉ は切り上げ)で求めるとき、必要なPodの数として、正しいものはどれか。
  3. Podのコンテナに上の設定をしたDeploymentで、Podが4つ動いており、どのPodもCPUを400m(0.4コア)ずつ使っている。HorizontalPodAutoscalerのCPU使用率の目標を60%とし、必要なPodの数は ⌈現在の数 × 現在の使用率 ÷ 目標の使用率⌉ で求めるものとする。必要なPodの数として、正しいものはどれか。
  4. Kubernetesで、コンテナに設定する資源の requests と limits の説明として、正しいものはどれか。
  5. 割り当て可能な資源がCPU 4コア、メモリ 8 GiB のノードがある。各Podのコンテナには、requests としてCPU 500m・メモリ 1.5 GiB、limits としてCPU 1コア・メモリ 2 GiB を設定した。ほかのPodやシステムの予約はないものとする。このノードに置けるPodの最大の数として、正しいものはどれか。