2026年7月28日
2026年7月28日
KubernetesのPersistentVolumeを設定する方法
はじめに
本記事では、Kubernetes上でデータ永続化を実現するためにPersistentVolume(以下PV)を使用する方法について解説します。PVはアプリケーションが持つデータを持久化し、ノードの再起動やスケールアップ/ダウンにも対応できるようにすることが可能です。
症状・背景
PersistentVolumeが必要になる主な場面としては以下の通りです:
- データの永続化: アプリケーションが持つデータをノード間で共有し、ローカルディスクの失敗やアップデートによる影響から保護する必要がある場合。
- スケーリング時のデータ管理: ノードの追加や削除時にデータが失われるのを防ぐために、アプリケーションのデータを外部ストレージに保存する必要がある場合。
- 複数アプリケーション間でのデータ共有: 複数のアプリケーションが同一のデータセットにアクセスする必要がある場合。
手順・設定方法
ステップ1: PVとPersistentVolumeClaim(以下PVC)を作成する
# PersistentVolumeの定義ファイルを作成 (pv.yaml)
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
# ストレージクラスの指定 (オプション)
# storageClassName: "slow"
# PersistentVolumeClaimの定義ファイルを作成 (pvc.yaml)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
ステップ2: PVとPVCを適用する
# pv.yamlを適用
kubectl apply -f pv.yaml
# pvc.yamlを適用
kubectl apply -f pvc.yaml
ステップ3: PVCを使用してPodを作成する
# pod.yamlに以下を記述
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: example-container
image: nginx
volumeMounts:
- mountPath: /data
name: example-data
volumes:
- name: example-data
persistentVolumeClaim:
claimName: example-pvc
# pod.yamlを適用
kubectl apply -f pod.yaml
ステップ4: 実践/トラブルシュート/監視
# Pod内のコンテナが正常に起動していることを確認する
kubectl get pods
# PVCの使用状況を確認する
kubectl get pvc
注意事項
- ストレージクラスの指定: ストレージクラスを明示的に指定することで、特定のバックエンドストレージ(例: AWS EBS, GCE PD)を利用できます。
- PVとPVCのリソース管理: PVは一方向的なリソースであり、PVCは二方向的なリソースです。適切な容量を確保することが重要です。
- ローカルストレージ: ローカルディスクを使用する場合は、
localストレージクラスを利用します。
まとめ
1. PersistentVolumeの作成: PVは一回限りで定義され、PVCは多次数で再利用できます。
2. PersistentVolumeClaimの作成: PVCはPodが使用する持久化データを宣言します。
3. Podとの連携: Pod内でPVCをマウントすることで、アプリケーションが持つデータを永続化します。
関連記事: