現場実践|Kubernetesストレージ設計

Kubernetesのストレージ設計入門|PersistentVolume・PVC・StorageClassとEBSの活用

「KubernetesでDBのデータを永続化したい」「PVとPVCの違いが分からない」——KubernetesのPersistentVolume・PersistentVolumeClaim・StorageClassの仕組みとAWS EBSとの連携を解説します。

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

💡 Kubernetesのストレージ設計はステートフルアプリケーションの運用で最重要なテーマ。PV・PVC・StorageClassの3者関係を理解することがKubernetes本番運用の鍵です。

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

Kubernetes本番環境のストレージ設計を複数案件で担当してきた立場から解説します。

1. PV・PVC・StorageClassの関係

🗄️
PersistentVolume(PV)
実際のストレージリソース(EBS・EFS・NFS等)を表すオブジェクト。クラスター管理者が作成する。動的プロビジョニングではStorageClassが自動作成する。
📋
PersistentVolumeClaim(PVC)
ユーザー(開発者)がストレージを要求するオブジェクト。「10GBのストレージが欲しい」という要求をPVCで宣言し、条件に合うPVに自動バインドされる。
⚙️
StorageClass
ストレージのプロビジョナーと設定を定義するオブジェクト。PVCが作成されるとStorageClassが自動的にEBS等のストレージを作成する(動的プロビジョニング)。

2. EKSでEBSを使う設定(CSIドライバー)

# StorageClassの定義(EBS gp3)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-gp3
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
  type: gp3
  encrypted: "true"

---
# PVCの定義
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ebs-gp3
  resources:
    requests:
      storage: 50Gi

3. EBSとEFSの使い分け

EBSEFS
アクセスモードReadWriteOnce(1つのPodから読み書き)ReadWriteMany(複数のPodから同時読み書き)
最適なユースケースDB・単一Podのステートフルアプリ共有ファイルストレージ・複数PodでのCMS
パフォーマンス高い(gp3で最大16,000 IOPS)スループット型(レイテンシーはEBSより高め)
📌 この記事のポイント
  • PVはストレージリソース・PVCはストレージ要求・StorageClassは動的プロビジョニングの定義という3者の関係
  • EKSではAWS EBSのCSIドライバーをインストールしてStorageClassを設定するだけで動的プロビジョニングが実現
  • EBSはReadWriteOnce(DB向け)・EFSはReadWriteMany(共有ファイル向け)で使い分ける

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

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

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

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