Kubernetesは、コンテナの大規模運用を支えるオーケストレーションプラットフォームのデファクトです。多くの概念がありますが、まずPod・Service・Deploymentの3つを押さえれば全体像がつかめます。本記事では、Kubernetesの基本概念を図解的に解説します。
Kubernetesの全体像
Kubernetesは「Master(コントロールプレーン)」と「Node(ワーカー)」で構成されたクラスタです。開発者は「望ましい状態」をYAMLで宣言し、Kubernetesがその状態に合うようPodを起動・調整します。
3つの基本概念
Pod
Podは「コンテナを動かす最小単位」です。1Podに1コンテナが基本ですが、必要に応じてサイドカーパターン(ログ収集・プロキシ等)で複数コンテナを束ねることもできます。
Deployment
「同じPodを何個立てる」「どのバージョンを使う」「ローリングアップデートする」などの宣言を担います。Deploymentが内部的にReplicaSetを作り、ReplicaSetがPodを作る、という階層です。
Service
Podは入れ替わるたびにIPが変わります。Serviceは「Podへの安定したアクセス口」を提供する仕組みで、ロードバランシングも担います。タイプはClusterIP(クラスタ内)、NodePort、LoadBalancerなど。
YAML例
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: nginx
image: nginx:1.27
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web
spec:
type: ClusterIP
selector: { app: web }
ports:
- port: 80
targetPort: 80
外部公開:Ingress
クラスタ外からHTTPSアクセスさせるには Ingress を使います。Nginx Ingress Controller・AWS Load Balancer Controllerなどが定番。ホスト名・パスでServiceにルーティング可能です。
主要な周辺概念
- ConfigMap / Secret:設定や機密値を分離
- Namespace:論理的な区切り(dev/stg/prod)
- HPA:水平オートスケール
- PVC:永続ボリュームの要求
- Helm:マニフェストのテンプレート化・パッケージ管理
マネージドサービス
- AWS:EKS
- GCP:GKE(オートパイロットが楽)
- Azure:AKS
- ローカル学習:minikube・kind・Docker Desktop
まとめ
Kubernetesは複雑ですが、Pod・Deployment・Serviceを中心に置くだけで全体像が見えてきます。学習はminikubeなどローカル環境で十分。本番ではEKS/GKE/AKSのマネージド版を使うことで、運用負荷を最小化できます。