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

KubernetesのWebアプリケーションで、livenessプローブの確認の処理の中で、依存先のデータベースに接続できるかまで調べるようにした。この設定で起こりうる問題として、最も適切なものはどれか。

  1. Aデータベースが止まると、Podがデータベースのあるノードに自動で移され、そのノードのほかのアプリケーションの性能が下がる
  2. Bデータベースが一時的に止まっただけで、すべてのPodのコンテナが再起動をくり返し、データベースが戻っても回復が遅れる
  3. Clivenessプローブが失敗してもPodがServiceの振り分け先から外れるだけなので、特に問題は起こらない
答えと解説を見る

正解:B. データベースが一時的に止まっただけで、すべてのPodのコンテナが再起動をくり返し、データベースが戻っても回復が遅れる

livenessプローブは、コンテナ自身が応答しなくなった(デッドロックなど)ときに、再起動で回復させるためのものです。依存先まで調べると、データベースが止まったときにすべてのPodの livenessプローブが失敗し、再起動しても直らないのに、コンテナの再起動がくり返されます。再起動の間は要求を処理できず、くり返すうちに次の再起動までの待ち時間が長くなることもあるので、データベースが戻った後の回復も遅れます。livenessプローブではプロセス自身が応答できるかだけを調べ、依存先の状態は、必要に応じて readinessプローブやアプリケーションのエラー処理で扱います。

  • A. プローブの失敗で、Podが別のノードに移されることはありません。livenessプローブが失敗すると、コンテナが再起動されます。
  • B. 正しい。依存先の障害で、すべてのPodの再起動がくり返されます。
  • C. 振り分け先から外すのは readinessプローブの働きです。livenessプローブが失敗すると、コンテナが再起動されます。
この分野を解く 分野ページへ

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

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

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

  1. KubernetesのHorizontalPodAutoscalerで、PodのCPU使用率の目標を70%、Podの数の範囲を1〜10とした。いま5つのPodの平均のCPU使用率が30%である。必要なPodの数を ⌈現在の数 × 現在の使用率 ÷ 目標の使用率⌉(⌈ ⌉ は切り上げ)で求めるとき、必要なPodの数として、正しいものはどれか。
  2. Podのコンテナに上の設定をしたDeploymentで、Podが4つ動いており、どのPodもCPUを400m(0.4コア)ずつ使っている。HorizontalPodAutoscalerのCPU使用率の目標を60%とし、必要なPodの数は ⌈現在の数 × 現在の使用率 ÷ 目標の使用率⌉ で求めるものとする。必要なPodの数として、正しいものはどれか。
  3. Kubernetesで、コンテナに設定する資源の requests と limits の説明として、正しいものはどれか。
  4. 割り当て可能な資源がCPU 4コア、メモリ 8 GiB のノードがある。各Podのコンテナには、requests としてCPU 500m・メモリ 1.5 GiB、limits としてCPU 1コア・メモリ 2 GiB を設定した。ほかのPodやシステムの予約はないものとする。このノードに置けるPodの最大の数として、正しいものはどれか。
  5. クラウドのマネージドなデータベースサービス(事業者がデータベースのソフトウェアを運用するサービス)を使う。責任共有モデルの考え方で、一般に利用者の責任として残るものはどれか。