現場実践|Kubernetes StatefulSet設計

Kubernetesでデータベースを運用する|StatefulSet・ヘッドレスサービス・PodDisruptionBudgetの実践

「KubernetesでMySQLやRedisを動かしたい」「StatefulSetとDeploymentの違いは?」——KubernetesでステートフルなワークロードをStatefulSetで管理する方法と、マネージドDBとの使い分けを解説します。

読了目安:約15分更新日:2026年4月

💡 KubernetesでDBを動かすことは技術的には可能ですが、本番環境ではAWSのRDS・ElastiCacheなどマネージドサービスを使うことを強く推奨します。キャッシュ・開発用DBなど一部のユースケースではStatefulSetが有効です。

この記事を書いた人
現役ITエンジニア・IT講師(経験14年)
CCNA・CCNP 取得LPIC-1 保有SES現場を複数経験

Kubernetes本番環境のステートフルワークロード設計を複数案件で担当してきた立場から解説します。

1. StatefulSetとDeploymentの違い

DeploymentStatefulSet
Podの名前ランダムなサフィックス(my-app-a1b2c)連番の固定サフィックス(mysql-0, mysql-1)
ボリューム共有PVCまたはemptyDirPodごとに独立したPVC(volumeClaimTemplates)
起動・削除順序並列(順序なし)順序あり(0→1→2の順に起動、逆順で削除)
ネットワークID毎回変わる固定(mysql-0.mysql-headless)
ユースケースステートレスアプリ(Webサーバー等)DB・Redis・Zookeeper等のステートフルアプリ

2. StatefulSetの基本設定

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
spec:
  serviceName: redis-headless
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
        - name: redis
          image: redis:7-alpine
          ports:
            - containerPort: 6379
          volumeMounts:
            - name: data
              mountPath: /data
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: ["ReadWriteOnce"]
        storageClassName: ebs-gp3
        resources:
          requests:
            storage: 10Gi

3. PodDisruptionBudgetで可用性を確保

# ノードのドレイン時にも最低1台のRedisを確保
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: redis-pdb
spec:
  minAvailable: 1
  selector:
    matchLabels:
      app: redis

PDBを設定することでKubernetesのノードドレイン(メンテナンス時)にも最低1台のPodが常に稼働している状態を保証できます。

📌 この記事のポイント
  • StatefulSetはPodに固定名・固定PVC・順序付き起動・固定ネットワークIDを提供するDB等向けのWorkloadタイプ
  • 本番のDB(MySQL/PostgreSQL)はRDS等のマネージドサービス推奨。StatefulSetはRedis・Kafka等で活用
  • PodDisruptionBudgetでノードメンテナンス中も最低稼働Pod数を保証して可用性を確保する

キャリアの疑問、一緒に解決しませんか?

Infra Academyでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。

※Kubernetesのバージョンにより設定方法が異なります。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営