コンテンツにスキップ

Kubernetes ストレージ

コンテナは入れ替わりやすいので、永続データをどう持つかが重要。

基本の考え方

  • コンテナのファイルシステムは使い捨て前提
  • 再作成されても残したいデータは外に持つ
  • Kubernetes では PV / PVC / StorageClass を中心に考える

用語

  • PV: クラスタ側に用意された永続ボリューム
  • PVC: アプリ側から見た「この容量のストレージが欲しい」という要求
  • StorageClass: どの種類のストレージをどう作るか

ざっくりした関係

  1. アプリが PVC を作る
  2. StorageClass に従ってストレージが払い出される
  3. Pod がそのボリュームをマウントする

ストレージの簡易図

[Pod]
  |
  v
[PVC]
  |
  v
[PV]
  |
  v
[StorageClass / Backing Storage]

メモ:

  • Pod は直接ストレージ実体を意識せず、まず PVC を要求する
  • PV は実際にバインドされる永続ボリューム
  • StorageClass は、どんな種類のストレージをどう払い出すかのルール

どんなときに必要か

  • DB のデータ保存
  • アップロードファイル保存
  • 一時キャッシュではなく永続化したいデータ保存

メモ

  • ステートレスなアプリはできるだけ外部ストレージへ寄せるほうが楽
  • DB を Kubernetes に載せるときは、バックアップや復旧も含めて考える必要がある
  • ローカル開発と本番環境では、ストレージ実装がかなり違うことが多い