すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ストレージの基礎

最終更新日:Jun 16, 2026

ACK で永続ストレージを構成するには、ボリューム、PV、PVC、StorageClass を理解する必要があります。

ボリューム

コンテナのファイルシステムはエフェメラルです。再起動するとファイルは失われます。ボリュームは Pod spec で外部ストレージを定義します。Kubernetes は実行時にコンテナにマウントします。

ACK は次のボリュームタイプをサポートします:

タイプ

説明

ローカルストレージ

hostPathemptyDir などのノードローカルボリュームです。データはノードに紐付き、ノードがダウンすると失われます。再スケジュールされる可能性があるステートフルワークロードには適しません。

ネットワークストレージ

Ceph、GlusterFS、NFS、iSCSI などのリモートボリュームです。データはリモートサービス上に存在しますが、サービスをローカルにマウントする必要があります。

Secret と ConfigMap

クラスターオブジェクトのデータ (認証情報、設定) をファイルとして Pod に公開する特殊なボリュームです。

PVC

ストレージを独立したオブジェクトとして抽象化する PersistentVolumeClaim に基づくボリュームです。耐久性があり、可搬性の高いストレージに使用します。

使用上の注意:

  • Pod は、異なるタイプを含めて複数のボリュームをマウントできます。

  • Pod 内のすべてのコンテナは、マウントされたボリュームを共有します。

  • ボリュームは Pod のライフサイクルを共有します。Pod の削除後にデータが永続化されるかどうかは、ボリュームタイプと設定に依存します。

  • データを永続化するには、PVC と PV を使用します。

PV と PVC

Kubernetes のボリュームがすべて永続的であるとは限りません。耐久性のあるストレージを実現するために、Kubernetes は次の 2 つのオブジェクトを導入し、 ストレージのプロビジョニング方法 ストレージの利用方法 を分離します:

  • PV はクラスターのストレージリソースであり、ノードに似ています。Pod がノードを使用するのと同様に、PVC は PV を使用します。PV には独自のライフサイクルがあり、いずれの Pod にも依存しません。

  • PVC はストレージ要求であり、Pod に似ています。Pod がノードに対して CPU とメモリを要求するのと同様に、PVC は PV に対して容量とアクセスモードを要求します。

開発者はストレージ要件 (PVC) を宣言し、管理者はプロビジョニング (PV) を管理します。

PV の例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-example
spec:
  capacity:
    storage: 20 Gi # 実際のクラウドディスクのサイズに合わせて調整します
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: diskplugin.csi.alibabacloud.com
    volumeHandle: <disk ID>
  volumeMode: Filesystem

PVC の例

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-example
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20 Gi
  volumeName: pv-example

バインドルール

PV と PVC は 1 対 1 の関係にあります。各 PV には、1 つの PVC のみがバインドされます。PVC を Pod で使用する前に、Kubernetes は次の条件を満たす PV を見つける必要があります:

フィールド

要件

volumeMode

PVC の volume mode と一致している必要があります

accessModes

PVC が要求するアクセスモードを含む必要があります

storageClassName

PVC で指定されている場合、PV は同じ StorageClass を持つ必要があります

ラベルセレクター

PV は PVC で定義されたラベルセレクターに一致する必要があります

storage

PV の容量は、PVC が要求する量以上である必要があります

storage フィールドの仕組み:

  • Kubernetes は storage を使用して、PV と PVC を照合し、バインドします。

  • 動的プロビジョニングでは、PVC の storage 値が、PV と基盤リソース (クラウドディスクなど) の容量を設定します。

  • リサイズをサポートするストレージタイプでは、PVC の storage 値が、スケールアウト後のターゲット容量を設定します。

  • storage は論理的な容量宣言です。実際の書き込み可能容量は、storage フィールドではなく、基盤となるストレージメディアに依存します。

ボリュームのアクセスモード

accessModes フィールドを使用して、ボリュームをマウントできる方法を定義します:

アクセスモード

略称

説明

ReadWriteOnce

RWO

単一ノードによる読み取り/書き込み

Alibaba Cloud ディスク

ReadOnlyMany

ROX

複数ノードによる読み取り専用

OSS バケット

ReadWriteMany

RWX

複数ノードによる読み取り/書き込み

NAS ファイルシステム

ボリュームのプロビジョニング方法

ACK は 2 つのプロビジョニングワークフロー (静的プロビジョニングと動的プロビジョニング) をサポートします。

静的プロビジョニング

image

静的プロビジョニングでは、クラスター管理者が事前に PV を作成します。クラウドディスク、NAS ファイルシステム、OSS バケットは静的プロビジョニングをサポートします。

  1. 管理者は Pod の要件に基づいてストレージリソース (クラウドディスクや NAS ファイルシステムなど) を割り当てます。

  2. 管理者は、容量と設定を含めて、それらのリソースを記述する PV を作成します。

  3. 開発者は、ワークロードに必要な内容を宣言する PVC を作成します。

  4. Pod が作成されると、Kubernetes は PVC を一致する PV にバインドします。

動的プロビジョニング

image

動的プロビジョニングでは、PVC が作成されると CSI プロビジョナーが PV を自動的に作成します。クラウドディスク、NAS ファイルシステム、OSS バケットは動的プロビジョニングをサポートします。

  1. 管理者は、ストレージタイプとプロビジョナーを定義する StorageClass を作成します。例えば、diskplugin.csi.alibabacloud.com はクラウドディスクをプロビジョニングします。

  2. 開発者は、StorageClass を参照する PVC を作成します。PV を手動で作成する必要はありません。

  3. Pod が作成されると、CSI プロビジョナーが StorageClass を読み取り、PV と基盤ストレージリソースを作成し、PV を PVC にバインドします。

動的プロビジョニングには 3 つの利点があります:

  • ライフサイクル管理の自動化:プロビジョナーが PV の作成と削除を自動的に処理します。

  • 運用負荷の軽減:管理者は個々の PV ではなく StorageClass を管理します。

  • 容量の整合性:PV と基盤リソースは常に PVC が要求した容量と一致します。

StorageClass

StorageClass は、動的プロビジョニングに使用されるストレージタイプ、プロビジョナー、およびパラメータを定義します。PVC が StorageClass を参照し、一致する PV が存在しない場合、Kubernetes はプロビジョナーを起動し、PV と基盤ストレージを自動的に作成します。

StorageClass の例

次の StorageClass は Alibaba Cloud ディスクをプロビジョニングします:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-topology-alltype
provisioner: diskplugin.csi.alibabacloud.com
parameters:
  type: cloud_auto,cloud_essd,cloud_ssd,cloud_efficiency
  fstype: ext4
  diskTags/a: b
  encrypted: "false"
  performanceLevel: PL1
  provisionedIops: "40000"
  burstingEnabled: "false"
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

主要パラメータ

パラメータ

説明

provisioner

ストレージをプロビジョニングする CSI ドライバーです。クラウドディスクには diskplugin.csi.alibabacloud.com、NAS には nasplugin.csi.alibabacloud.com、OSS には ossplugin.csi.alibabacloud.com を使用します。

parameters

ディスクタイプ、ファイルシステムタイプ、パフォーマンス設定など、ドライバー固有のパラメータです。

reclaimPolicy

PVC が削除されたときに PV と基盤ストレージをどう扱うかを指定します。Delete (デフォルト) は PV とクラウドディスクの両方を削除します。Retain は両方を保持します。手動で削除する必要があります。データセキュリティを重視する場合は Retain に設定します。

allowVolumeExpansion

true に設定すると、オンラインでのディスク拡張が有効になります。

volumeBindingMode

PV をプロビジョニングするタイミングです。次の表をご参照ください。

volumeBindingMode の選択:

モード

PV が作成されるタイミング

推奨

Immediate (デフォルト)

PVC の作成時 (Pod がスケジュールされる前)

シングルゾーンクラスター

WaitForFirstConsumer

PVC を使用する Pod がノードにスケジュールされた後

マルチゾーンクラスター

マルチゾーンクラスターでは WaitForFirstConsumer を使用します。クラウドディスクはゾーンを跨いでマウントできません。PV がゾーン A にあり、Pod がゾーン B にスケジュールされると、Pod は起動に失敗します。WaitForFirstConsumer を使用すると、プロビジョナーは Pod のスケジュールを待機し、その後 Pod がスケジュールされたゾーンにディスクを作成します。

WaitForFirstConsumer の仕組み:

PVC が作成されると、プロビジョナーは Pod によって使用されるまで待機します。Scheduler は Pod をノードに配置し、結果 (リージョンとノード) を PVC metadata に書き込みます。その後、プロビジョナーが正しいゾーンに PV とディスクを作成します。

デフォルトの StorageClass

デフォルトの StorageClass は、StorageClass 名を省略した PVC に対して PV を自動的にプロビジョニングします。

重要

ACK クラスターにはデフォルトの StorageClass が含まれていません。デフォルトの StorageClass は、storageClassName を指定しない すべて の PVC に適用されます。クラスターで複数のストレージタイプを使用している場合、意図しないタイプがプロビジョニングされる可能性があります。すべての PVC が同じストレージタイプを使用する場合にのみ有効化してください。

デフォルトの StorageClass の設定:

alicloud-disk-topology-alltype をデフォルトとして設定します:

kubectl annotate storageclass alicloud-disk-topology-alltype storageclass.kubernetes.io/is-default-class=true

変更を確認します:

kubectl get sc

想定される出力:

NAME                                        PROVISIONER                       AGE
alicloud-disk-topology-alltype (default)    diskplugin.csi.alibabacloud.com   96m

StorageClass を指定せずに PVC を作成:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: disk-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20 Gi

クラスターは alicloud-disk-topology-alltype を使用してクラウドディスク PV を自動的に作成します。

kubectl get pvc

想定される出力:

NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES    STORAGECLASS                      AGE
disk-pvc   Bound    d-bp18pbai447qverm****   20 Gi       RWO             alicloud-disk-topology-alltype    49s

デフォルトの StorageClass の解除:

kubectl annotate storageclass alicloud-disk-topology-alltype storageclass.kubernetes.io/is-default-class-

ACK が提供する StorageClass

StorageClass

ディスクタイプ

注記

alicloud-disk-efficiency

Ultra disk

旧世代のクラウドディスク

alicloud-disk-ssd

標準 SSD

旧世代のクラウドディスク

alicloud-disk-essd

ESSD

Performance Level 1 (PL1) ESSD

alicloud-disk-topology-alltype

マルチタイプ

まず ESSD を試行し、次に標準 SSD、最後に Ultra disk を試行します。マルチゾーンクラスターに推奨します。

alibabacloud-cnfs-nas

CNFS 管理の NAS

Container Network File System (CNFS) 管理の NAS ボリュームを作成します

alicloud-disk-topology-alltype StorageClass は、利用可能な最適なディスクタイプを選択します:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-topology-alltype
parameters:
  type: cloud_essd,cloud_ssd,cloud_efficiency
provisioner: diskplugin.csi.alibabacloud.com
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

次のステップ

すべてのストレージタイプとガイドについては、「ストレージ」をご参照ください。

特定のストレージタイプをプロビジョニングするには: