Kubernetes

Pod ぽっど

KubernetesコンテナDockerスケジューリングマイクロサービスオーケストレーション
Podについて教えて

簡単に言うとこんな感じ!

PodはKubernetesで「アプリを動かす最小の入れ物」だよ!コンテナ(アプリの箱)を1個以上まとめて包んだ単位で、KubernetesはこのPod単位でアプリを起動・停止・管理するんだ。お弁当箱の中に「ご飯+おかず」が一緒に入ってるイメージ!


Podとは

Pod(ポッド) は、Kubernetesにおいてアプリケーションをデプロイ(展開)する際の最小単位です。1つ以上のコンテナDockerなどで作ったアプリの実行環境)をひとまとめにしたグループで、これ単位でKubernetesクラスター上に配置・管理されます。

Podの特徴は、同じPod内のコンテナがネットワークアドレス(IPアドレス)とストレージ(ボリューム)を共有する点です。たとえば「Webアプリ本体」と「ログ収集エージェント」を同じPodに入れると、localhost経由で通信でき、ファイルも共有できます。複数のプロセスが密接に連携する場面で非常に便利な設計です。

一方でPodは使い捨て(Ephemeral) が前提です。障害が起きたり、スケールアップの必要が生じたりすると、古いPodを捨てて新しいPodが作られます。「このPodが永遠に動き続ける」という前提は持たないように設計することが重要です。


Podの構造と主要な概念

要素説明
コンテナ(Container)Pod内で実際に動くアプリの実行単位。1Podに複数持てる
IPアドレスPod単位で1つ割り当てられる。同Pod内のコンテナで共有
ボリューム(Volume)Pod内のコンテナ間でファイルを共有するための記憶領域
ラベル(Label)Podに付けるタグ。Service やDeploymentからPodを特定するために使う
ライフサイクルPending → Running → Succeeded / Failed の順で遷移する

Pod内のコンテナ構成パターン

Pod内のコンテナは「1つのメインコンテナ+サポート役のサブコンテナ」という形が一般的です。このサブコンテナのことを サイドカー(Sidecar)パターン と呼びます。

パターン構成例用途
単体コンテナWebアプリのみシンプルな構成
サイドカーWebアプリ + ログ収集エージェントログ・監視の付加
アンバサダーWebアプリ + プロキシ外部通信の仲介
アダプターWebアプリ + 変換コンテナデータ形式変換

覚え方:「Pod=マメのサヤ」

Podは英語で「豆のさや」という意味です。さやの中に豆(コンテナ)が複数入っているイメージで覚えると忘れません!Kubernetesの名前の由来である「舵手(かじしゅ)」が、さやごとコンテナを運んでいるイメージです。


歴史と背景

  • 2013年 — Dockerが登場し、コンテナ技術が一般に普及し始める
  • 2014年 — GoogleがKubernetesをオープンソースとして公開。社内システム「Borg」の設計思想をベースに開発。PodはBorgの「task group」に相当する概念
  • 2015年 — Kubernetes v1.0リリース。CNCFに寄贈される。Podが基本単位として正式に確立
  • 2016〜2017年 — PodをベースにDeployment・ReplicaSet・StatefulSetなどの上位リソースが整備され、直接Podを操作する機会が減っていく
  • 2020年代マイクロサービスクラウドネイティブ設計が主流となり、PodはKubernetesの「原子」として業界標準の概念に定着

PodとDeploymentの関係・周辺リソース

実際の運用ではPodを直接作ることはほとんどありません。Podを管理・監視する上位リソース(DeploymentStatefulSet)を使ってPodを間接的に操作するのが一般的です。

KubernetesリソースとPodの関係 Deployment ステートレスアプリの管理 ReplicaSet Pod数を維持する StatefulSet ステートフルアプリの管理 Pod Container Container (Sidecar) Pod Container Pod(固定名) Container ×2レプリカ 固定IDで管理

主要リソースとPodの使い分け

リソースPodとの関係主な用途
DeploymentReplicaSet経由でPodを管理WebサーバーなどステートレスなアプリにK
ReplicaSet指定した数のPodを維持するDeploymentに内包される形が多い
StatefulSet順序・固定名付きでPodを管理DB・メッセージキューなどデータを持つアプリ
DaemonSet全ノードに1つずつPodを配置ログ収集・監視エージェントなど
Job / CronJob完了したら終わるPodを管理バッチ処理・定期タスク

関連する規格・RFC

この用語に直接対応するIETF RFCやISO規格はありません。Kubernetesの仕様はCNCF(Cloud Native Computing Foundation)によって管理されており、以下のリソースが公式の定義となります。

規格・仕様内容
Kubernetes API仕様(v1 Pod)PodリソースのAPI定義(公式ドキュメント)
OCI Runtime SpecificationPod内で動くコンテナの実行環境仕様(Open Container Initiative)

関連用語

  • Kubernetes — コンテナ化されたアプリの自動管理(オーケストレーション)を行うOSSプラットフォーム
  • コンテナ — アプリとその実行環境をまとめてパッケージ化した軽量な仮想化単位
  • Docker — コンテナの作成・実行に広く使われるプラットフォーム
  • Deployment — PodをReplicaSet経由で管理し、ローリングアップデートを提供するKubernetesリソース
  • Service — Podへの安定したネットワークアクセスを提供するKubernetesリソース
  • ReplicaSet — 指定した数のPodが常に稼働するよう維持するKubernetesリソース
  • Namespace — Kubernetesクラスター内でリソースを論理的に分離する仕組み
  • マイクロサービス — アプリを小さな独立したサービス群に分割して開発・運用するアーキテクチャ手法