Kubernetesの基本概念|Pod・Service・Deploymentを図解

インフラ・クラウド

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のマネージド版を使うことで、運用負荷を最小化できます。