Podとは

ぽっど

Kubernetesで、配置して動かす最小の単位。1つ以上のコンテナをまとめたもので、中のコンテナはIPアドレスなどのネットワークの名前空間とボリュームを共有し、互いに localhost で通信できる。ふつうは1つのアプリケーションのコンテナに、必要に応じて補助のコンテナを加える。Podは使い捨てで、作り直されると一般に名前やIPアドレスが変わるので、DeploymentなどでPodの数を保ち、Serviceで安定した接続先を与えて使う。

「Pod」は、1分野の13問の練習問題に出てきます(クラウドとコンテナの基礎など)。

この用語の分野: クラウドとコンテナの基礎

Podの練習問題に挑戦

Kubernetesで、replicas: 3 を指定したDeploymentのPodが3つ動いている。このうち1つのPodを kubectl delete pod で削除したときに起きることとして、正しいものはどれか。

  1. ADeploymentの設定も replicas: 2 に書き換わり、Podは2つのまま動き続ける
  2. B実際の数が指定した3に足りなくなったことをコントローラが検知し、新しいPodを1つ作る
  3. CDeploymentに属するほかの2つのPodも削除され、Deployment全体が停止する
答えと解説を見る

正解:B. 実際の数が指定した3に足りなくなったことをコントローラが検知し、新しいPodを1つ作る

Kubernetesでは、利用者は「Podを3つ動かす」というあるべき状態を宣言し、コントローラが実際の状態をくり返し観察して、違いがあれば宣言に近づけるように操作します(リコンサイル)。Podを1つ削除すると実際の数が2になるので、ReplicaSetのコントローラが新しいPodを作って3に戻します。ノードの故障でPodが失われた場合も、同じ仕組みでほかのノードにPodが作り直されます。Podの数を本当に減らしたいときは、Podを消すのではなく、Deploymentの replicas を変更します。

KubernetesのDeploymentで、Podのテンプレートのコンテナイメージを新しい版に変更した。既定の更新方式(RollingUpdate)で起きることとして、正しいものはどれか。

  1. A新しいReplicaSetを作り、新しい版のPodを増やしながら古い版のPodを減らす。古いReplicaSetは、ロールバック用にPodが0で残る
  2. B動いているPodの中のコンテナイメージが、Podを作り直さずにその場で新しい版に入れ替えられるので、PodのIPアドレスも名前も変わらない
  3. C古い版のPodをすべて同時に削除してから、新しい版のPodをまとめて作るので、更新の間は一時的にサービスが止まる
答えと解説を見る

正解:A. 新しいReplicaSetを作り、新しい版のPodを増やしながら古い版のPodを減らす。古いReplicaSetは、ロールバック用にPodが0で残る

Deploymentは、Podのテンプレートが変わると、新しいテンプレートのReplicaSetを作り、新しいPodが準備できたことを確かめながら、古いReplicaSetのPodを少しずつ減らします。そのため、更新の間も一定の数のPodが要求を処理し続けます。古いReplicaSetはPodが0の状態で残されるので、kubectl rollout undo で前の版に戻せます。全部のPodを先に消してから作り直す方式は Recreate で、明示的に指定したときに使われます。

解説の中の「Pod」

「Pod」が出てくる問題(13問)

  1. Kubernetesで、replicas: 3 を指定したDeploymentのPodが3つ動いている。このうち1つのPodを kubectl delete pod で削除したときに起きることとして、正しいものはどれか。
  2. KubernetesのDeploymentで、Podのテンプレートのコンテナイメージを新しい版に変更した。既定の更新方式(RollingUpdate)で起きることとして、正しいものはどれか。
  3. replicas: 10 のDeploymentで、ローリングアップデートの設定を maxSurge: 25%、maxUnavailable: 25% とした。更新の途中の、Podの総数の上限と、利用可能なPodの数の下限の組み合わせとして、正しいものはどれか。
  4. Kubernetesで、Podは作り直されるたびにIPアドレスが変わる。ほかのアプリケーションから、ラベルで選んだ複数のPodに、変わらない名前とアドレスで接続して負荷を分散できるようにするリソースはどれか。
  5. あるWebアプリケーションは、起動してからキャッシュを読み込むまでの約60秒間は要求を処理できず、その間は /ready に503を返す。Podのコンテナに上の設定を加えたときの効果として、正しいものはどれか。
  6. KubernetesのHorizontalPodAutoscalerで、PodのCPU使用率の目標を70%、Podの数の範囲を1〜10とした。いま5つのPodの平均のCPU使用率が30%である。必要なPodの数を ⌈現在の数 × 現在の使用率 ÷ 目標の使用率⌉(⌈ ⌉ は切り上げ)で求めるとき、必要なPodの数として、正しいものはどれか。
  7. Podのコンテナに上の設定をしたDeploymentで、Podが4つ動いており、どのPodもCPUを400m(0.4コア)ずつ使っている。HorizontalPodAutoscalerのCPU使用率の目標を60%とし、必要なPodの数は ⌈現在の数 × 現在の使用率 ÷ 目標の使用率⌉ で求めるものとする。必要なPodの数として、正しいものはどれか。
  8. 割り当て可能な資源がCPU 4コア、メモリ 8 GiB のノードがある。各Podのコンテナには、requests としてCPU 500m・メモリ 1.5 GiB、limits としてCPU 1コア・メモリ 2 GiB を設定した。ほかのPodやシステムの予約はないものとする。このノードに置けるPodの最大の数として、正しいものはどれか。
  9. Kubernetesで、デプロイして管理する最小の単位であり、1つ以上のコンテナをまとめて、同じIPアドレスやボリュームを共有させるものはどれか。
  10. Kubernetesのクラスタで、1つのホスト名に届いたHTTPSの要求のうち、パスが /api で始まるものは api のServiceへ、それ以外は web のServiceへ振り分けたい。この振り分けの規則を定めるのに適したリソースはどれか。
  11. KubernetesのSecretに、データベースのパスワードを保存する。Secretの説明として、正しいものはどれか。
  12. KubernetesのWebアプリケーションで、livenessプローブの確認の処理の中で、依存先のデータベースに接続できるかまで調べるようにした。この設定で起こりうる問題として、最も適切なものはどれか。
  13. Kubernetesで、コンテナに設定する資源の requests と limits の説明として、正しいものはどれか。

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

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

関連する用語

Kubernetes コンテナ HTTP コンテナイメージ DNS オートスケーリング TLS リバースプロキシ 環境変数 デッドロック

用語集の一覧へ