現場実践|Kubernetesストレージ管理

Kubernetesのストレージ管理|PersistentVolume・PVC・StorageClassとEBSの動的プロビジョニング

「KubernetesでDBのデータを永続化したい」「PodをスケールするたびにデータがなくなってしまUる」——KubernetesのPersistentVolume・PersistentVolumeClaim・StorageClass・AWS EBSの動的プロビジョニングを解説します。

読了目安:約18分更新日:2026年3月

💡 Kubernetesのコンテナはデフォルトではデータが永続化されません。PV・PVCを使ってEBSやEFSをPodにマウントすることで、Pod再起動・再スケジュールでもデータを保持できます。

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

KubernetesのストレージとAWSのEBS/EFSの統合を本番環境で担当してきた立場から解説します。

1. PV・PVC・StorageClassの関係

PersistentVolume(PV)は管理者が用意した実際のストレージリソース(EBSボリューム等)です。PersistentVolumeClaim(PVC)は開発者がストレージの「要求」を定義するリソースです。StorageClassを使うと「PVCを作成したときに自動でEBSを作成してPVとしてバインドする」動的プロビジョニングが実現できます。

2. EBS CSIドライバーによる動的プロビジョニング

# StorageClassの定義(EBS gp3)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-gp3
provisioner: ebs.csi.aws.com
parameters:
  type: gp3
  encrypted: "true"
volumeBindingMode: WaitForFirstConsumer
---
# PersistentVolumeClaimの定義
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ebs-gp3
  resources:
    requests:
      storage: 20Gi
---
# PodにPVCをマウント
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgres
spec:
  template:
    spec:
      containers:
        - name: postgres
          image: postgres:15
          volumeMounts:
            - name: postgres-storage
              mountPath: /var/lib/postgresql/data
  volumeClaimTemplates:
    - metadata:
        name: postgres-storage
      spec:
        accessModes: ["ReadWriteOnce"]
        storageClassName: ebs-gp3
        resources:
          requests:
            storage: 20Gi

3. EBSとEFSの使い分け

  • EBS(ReadWriteOnce):1つのPodのみからマウント可能。データベース・ステートフルアプリに使う。EBS CSIドライバーで動的プロビジョニング可能
  • EFS(ReadWriteMany):複数PodからNFSで同時マウント可能。共有ファイルストレージ・WordPressのメディアファイル等に使う。EFS CSIドライバーが必要
📌 この記事のポイント
  • StorageClassをgp3・暗号化ありで定義してWaitForFirstConsumerにすることでEBSの動的プロビジョニングが実現する
  • StatefulSetのvolumeClaimTemplatesでPod毎に個別のEBSを自動作成・マウントする設計が本番DBの標準
  • EBSはReadWriteOnce(1Pod)・EFSはReadWriteMany(複数Pod同時)でデータの性質に応じて選択する

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

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

※KubernetesとAWSのCSIドライバーのバージョンにより設定が異なります。

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