Kubernetes Learning 第19章:ローカルストレージとクラウドストレージ(EBS, NFSなど)

Kubernetesではアプリケーションにストレージを提供する際、「どこに保存されるか?」はとても重要なポイントです。

この章では、Kubernetesでよく使われるストレージの種類であるローカルストレージと**クラウドストレージ(EBS, NFSなど)**の違いや、使い分けの考え方を説明します。


🧱 ローカルストレージとは?

ローカルストレージとは、「Kubernetesノード自身のディスク(物理 or 仮想マシンのローカル)」を使う方法です。

たとえば、あるノードの /mnt/data ディレクトリをPVとして利用するケースです。

spec:
  hostPath:
    path: /mnt/data

✅ 特徴

  • 早い(ディスクI/Oが高速)
  • シンプル(外部ストレージの設定が不要)
  • しかし、そのノードに依存 → Podが他のノードに移動したらデータにアクセスできない!

✅ 向いている用途

  • 単一ノードで完結する開発用アプリ
  • キャッシュなど、失ってもよい一時データ

☁️ クラウドストレージとは?

クラウド環境(AWS、GCP、Azureなど)では、外部にあるネットワーク越しのストレージを使うことが一般的です。これらは Kubernetes の PV/PVC と組み合わせて簡単に使えます。

代表的なもの:

種類概要
Amazon EBSAWSのブロックストレージ。EC2にアタッチして使う。
Google Persistent DiskGCPの同様のブロックストレージ。
Azure Disk / Azure FileAzure上で提供されるストレージ。
NFS(Network File System)ネットワーク越しのファイル共有。オンプレやNASにも使われる。

✅ 特徴

  • 複数ノードで利用可能
  • データはPodが再スケジュールされても残る
  • 自動スナップショットやバックアップ機能と連携できる

✅ 向いている用途

  • データベースの永続化
  • 本番環境でのストレージ利用全般
  • チームでのファイル共有

🆚 比較まとめ

項目ローカルストレージクラウドストレージ(EBS, NFSなど)
可搬性× ノード依存○ 他ノードでも使える
耐障害性△ ノード障害で消失の可能性あり○ クラウドが管理、可用性高
性能○ 高速(物理に近い)△ ネットワーク経由でやや遅いことも
コスト○ ほぼ無料(自分のディスク)△ クラウドの従量課金が発生
運用○ シンプル△ バックアップなど考慮が必要

💡 実務での選び方のヒント

  • 開発・学習用途:MinikubeなどではローカルストレージでOK
  • 本番環境(AWS/GCPなど):クラウド提供の永続ストレージを使うのが一般的
  • 共有ファイルの保存:複数Podで共有したいならNFSが便利
  • 高速性重視:ノードに強く依存してもよければローカルストレージ

📦 KubernetesのYAML例(EBS)

AWSでEBSを使う例(StorageClass付き):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ebs-pvc
spec:
  storageClassName: gp2  # EBS用のStorageClass
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

※クラウド環境ではStorageClassが大事になります。


🎯 まとめ

  • ローカルストレージは手軽で速いが、ノード依存で消える可能性あり
  • **クラウドストレージ(EBS, NFSなど)**は可搬性と安全性に優れるが、ややコストがかかる
  • Kubernetesでは、PVCを使ってどちらのストレージでも同じようにアクセスできるのが大きなメリット

mh

Related Posts

Kubernetes Learning 第18章:PVC(PersistentVolumeClaim)の使い方

アプリケーションがログファイルやデータベースのデータなど、再…

Kubernetes Learning 第17章:VolumeとPersistentVolumeの基礎

Kubernetesを使っていて最初に戸惑うポイントの1つが…

You Missed

Kubernetes Learning 第19章:ローカルストレージとクラウドストレージ(EBS, NFSなど)

  • 投稿者 mh
  • 5月 23, 2025
  • 18 views

Android application development 第23章:Javaエンジニアに向けたDIの復習

  • 投稿者 mh
  • 5月 23, 2025
  • 15 views

Kubernetes Learning 第18章:PVC(PersistentVolumeClaim)の使い方

  • 投稿者 mh
  • 5月 22, 2025
  • 19 views

Android application development 第22章:MVVMアーキテクチャ(Model-View-ViewModel)

  • 投稿者 mh
  • 5月 22, 2025
  • 19 views

Kubernetes Learning 第17章:VolumeとPersistentVolumeの基礎

  • 投稿者 mh
  • 5月 21, 2025
  • 32 views

Android application development 第21章:ViewModel、LiveData、DataBindingの導入

  • 投稿者 mh
  • 5月 21, 2025
  • 29 views