Kubernetes(K8s)では、Pod と ノード(Node) はコンテナの管理やスケーリングにおいて重要な概念です。それぞれの役割と違いを詳しく解説します。
1. Podとは?
✅ 概要
- Pod は Kubernetes の最小デプロイ単位。
- 1つ以上のコンテナを内包し、ストレージやネットワークを共有する。
-
同じ Pod 内のコンテナはローカル通信が可能(
localhost
で接続)。 - Pod は基本的にノード内で動作する。
✅ Podの構成
構成要素 | 説明 |
---|---|
コンテナ | Pod 内で動作するアプリケーション(通常はDockerコンテナ) |
ストレージ (Volume) | Pod 内でデータを永続化するためのストレージ |
ネットワーク | Podごとに1つのIPアドレスを持つ |
メタデータ | Pod の名前やラベル、アノテーションなど |
✅ Podの特徴
-
単一コンテナのPod
- 1つのコンテナのみを持つ → 一般的な構成。
apiVersion: v1 kind: Pod metadata: name: single-container-pod spec: containers: - name: my-app image: nginx
-
マルチコンテナのPod
- 複数のコンテナが1つのPod内で連携(例: Webサーバー + サイドカー)。
apiVersion: v1 kind: Pod metadata: name: multi-container-pod spec: containers: - name: web-server image: nginx - name: sidecar image: redis
2. ノード(Node)とは?
✅ 概要
- Kubernetes クラスタを構成する物理 or 仮想マシン。
- Pod をスケジュールし、実行する役割を持つ。
- Master(コントロールプレーン)と Worker(ワーカーノード) に分かれる。
✅ ノードの種類
ノードの種類 | 役割 |
---|---|
マスターノード(Control Plane) | クラスター全体の管理・スケジューリングを行う |
ワーカーノード(Worker Node) | Pod を実行するマシン |
✅ ノードの構成
コンポーネント | 説明 |
---|---|
Kubelet | ノード上で動作し、Pod の作成・管理を担うエージェント |
Kube Proxy | ノード間のネットワークを管理 |
Container Runtime | コンテナを実行する環境(Docker, containerd) |
✅ ノードの確認コマンド
kubectl get nodes
3. Pod と ノード の関係
- ノードは Pod をホストする(1つのノードに複数のPodが存在可能)。
- Pod はノード内でスケジューリングされ、ノードのリソースを使用して動作する。
- ノードがダウンすると、そのノード上のPodは別のノードに再スケジュールされる(冗長性確保)。
✅ 関係性のイメージ
+------------------- Kubernetes Cluster -------------------+
| +----------------+ +----------------+ +----------------+ |
| | Node 1 | | Node 2 | | Node 3 | |
| | +-----------+ | | +-----------+ | | +-----------+ | |
| | | Pod A | | | | Pod C | | | | Pod E | | |
| | +-----------+ | | +-----------+ | | +-----------+ | |
| | | Pod B | | | | Pod D | | | | Pod F | | |
| | +-----------+ | | +-----------+ | | +-----------+ | |
| +----------------+ +----------------+ +----------------+ |
+-----------------------------------------------------------------------+
✅ Pod のノード割り当てを確認
kubectl get pod -o wide
4. Pod と ノード のスケーリング
✅ Pod のスケール(HPA)
kubectl scale deployment my-app --replicas=5
✅ ノードのスケール(Cluster Autoscaler)
gcloud container clusters update my-cluster --enable-autoscaling --min-nodes=1 --max-nodes=10 --node-pool my-node-pool
5. まとめ
要素 | 役割 | スケーリング方法 |
---|---|---|
Pod | 最小デプロイ単位、コンテナをホスト | HPA(Horizontal Pod Autoscaler) |
ノード | Podを実行するマシン | Cluster Autoscaler |
Pod は Kubernetes の基本単位 であり、ノードは Pod を実行するためのリソース を提供します。これらを適切に管理することで、スケーラブルなアプリケーションを構築できます!