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 第37章:JenkinsやGitHub ActionsからのKubernetesデプロイ例 ~CI/CDツールとKubernetesをつなげてみよう~

Kubernetes Learning 第36章:Argo CDとFluxの概要~Kubernetesの自動運用を支えるGitOpsツール~

You Missed

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 9 views

Kubernetes Learning 第37章:JenkinsやGitHub ActionsからのKubernetesデプロイ例 ~CI/CDツールとKubernetesをつなげてみよう~

  • 投稿者 mh
  • 6月 17, 2025
  • 12 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第10章:Cloud DNS:インターネットの「電話帳」サービス

  • 投稿者 mh
  • 6月 16, 2025
  • 15 views

Kubernetes Learning 第36章:Argo CDとFluxの概要~Kubernetesの自動運用を支えるGitOpsツール~

  • 投稿者 mh
  • 6月 15, 2025
  • 31 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第9章:IPアドレス(外部IP、内部IP、静的IP):GCPリソースの「住所」と「電話番号」

  • 投稿者 mh
  • 6月 14, 2025
  • 28 views

Kubernetes Learning 第35章:GitOpsとは?~Kubernetes運用をもっとスマートにする考え方~

  • 投稿者 mh
  • 6月 13, 2025
  • 52 views