Kubernetes ストレージ¶
コンテナは入れ替わりやすいので、永続データをどう持つかが重要。
基本の考え方¶
- コンテナのファイルシステムは使い捨て前提
- 再作成されても残したいデータは外に持つ
- Kubernetes では
PV/PVC/StorageClassを中心に考える
用語¶
PV: クラスタ側に用意された永続ボリュームPVC: アプリ側から見た「この容量のストレージが欲しい」という要求StorageClass: どの種類のストレージをどう作るか
ざっくりした関係¶
- アプリが
PVCを作る StorageClassに従ってストレージが払い出される- Pod がそのボリュームをマウントする
ストレージの簡易図¶
[Pod]
|
v
[PVC]
|
v
[PV]
|
v
[StorageClass / Backing Storage]
メモ:
- Pod は直接ストレージ実体を意識せず、まず
PVCを要求する PVは実際にバインドされる永続ボリュームStorageClassは、どんな種類のストレージをどう払い出すかのルール
どんなときに必要か¶
- DB のデータ保存
- アップロードファイル保存
- 一時キャッシュではなく永続化したいデータ保存
メモ¶
- ステートレスなアプリはできるだけ外部ストレージへ寄せるほうが楽
- DB を Kubernetes に載せるときは、バックアップや復旧も含めて考える必要がある
- ローカル開発と本番環境では、ストレージ実装がかなり違うことが多い