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

Container Service for Kubernetes:ストレージの概要

最終更新日:Mar 01, 2026

Kubernetes アプリケーションでは、データを保存するために永続ストレージが必要となることがよくあります。Alibaba Cloud Container Service for Kubernetes (ACK) は、標準的な Container Storage Interface (CSI) を介して、Elastic Block Storage (EBS)、Object Storage Service (OSS)、Network Attached Storage (NAS)、Cloud Parallel File Storage (CPFS) などの複数の Alibaba Cloud ストレージサービスと統合されています。また、ACK は Kubernetes ネイティブのストレージメカニズムとも互換性があり、さまざまなビジネスシナリオに合わせたストレージソリューションを提供します。ACK は Container Storage Interface (CSI) を通じて複数の Alibaba Cloud ストレージサービスと統合されており、Kubernetes ネイティブのボリュームタイプもサポートしています。これにより、一時的および永続的なワークロードの両方に対して柔軟なストレージオプションが提供されます。

ストレージソリューションの選択

ACK では、以下の 2 種類のストレージソリューションを提供しています。

  • Kubernetes ネイティブボリューム:一時データ、構成管理、またはノードレベルでの連携を目的として設計されています。そのライフサイクルは Pod に紐付いており、アプリケーションデータの永続化には対応していません。

  • Alibaba Cloud 永続ボリューム:Container Storage Interface (CSI) コンポーネントを介して統合され、ワークロードに対して安定的かつ信頼性の高いデータ永続化を提供します。そのライフサイクルは Pod とは独立しており、ステートフルアプリケーションをサポートします。

image
コンテナストレージを使用する前に、ボリューム、PersistentVolume (PV)、PersistentVolumeClaim (PVC) などの基本概念を理解しておく必要があります。詳細については、「ストレージの基本」をご参照ください。

Kubernetes ネイティブボリューム

Kubernetes ネイティブボリュームは、Pod に紐付いたライフサイクルを持ち、アプリケーションデータの永続化には適していません。

タイプ

説明

主な特徴

emptyDir

Pod のライフサイクルと一致する一時的な空ディレクトリです。

Pod が削除されるとデータは失われます。Pod 内のコンテナー間でのデータ交換や一時キャッシュに使用します。

HostPath

ホストノード上のファイルまたはディレクトリを Pod にマウントします。type フィールド(例:DirectoryOrCreate)を使用して、事前マウントチェックや作成動作を制御できます。

詳細については、「HostPath ボリューム

データはノードに固定され、Pod と共に移動しません。高可用性および永続性を必要とするステートフルアプリケーション(例:データベースやキャッシュ)には適していません。

ConfigMap/Secret

設定項目や機密認証情報をファイルとしてマウントします。

小容量の構成データ専用であり、業務データには使用できません。アプリケーションから構成を分離するために使用します。

Alibaba Cloud 永続ボリューム

永続データストレージを必要とするステートフルアプリケーションには、Alibaba Cloud 永続ボリュームを使用できます。これらのボリュームは Pod とは独立したライフサイクルを持ち、CSI を使用して Kubernetes と統合されています。

ソリューション比較

適切なオプションを迅速に選択できるよう、以下の表に各ストレージソリューションの主要属性を示すアイコンを記載しています。たとえば、EBS の場合:

  • imageクラウドディスク:ソリューションの詳細。(詳細を表示)をクリックすると詳細が表示されます。

  • 静的/動的: 静的プロビジョニング (PV/PVC) と動的プロビジョニング (StorageClass/PVC) を含む、サポートされているボリュームプロビジョニングメソッド。ステップバイステップの手順については、リンクをクリックしてください。

  • RWO: サポートされているアクセスモード (accessModes) は、 RWO (ReadWriteOnce)、 RWX (ReadWriteMany)、および ROX (ReadOnlyMany) です。

  • 課金:課金の詳細。リンクをクリックすると詳細が表示されます。

ストレージオプション

説明

トレードオフと制限事項

image クラウドディスク

静的/動的 | RWO (マルチアタッチ無効) | 課金

  • 説明:データ信頼性(99.9999999%)と一貫した I/O パフォーマンスを実現するブロックストレージサービスです。データはバックエンドで 3 レプリカに冗長化されて保存されます。EBS はファイルシステムモード (volumeMode: Filesystem) と RAW ブロックデバイスモード (volumeMode: Block) の両方をサポートしています。また、複数のパフォーマンスタイア(ESSD AutoPL、ESSD、ESSD Entry)および保存時暗号化を提供しています。

  • 適用範囲:MySQL や PostgreSQL などのデータベース、Redis や Elasticsearch などのミドルウェアなど、I/O およびデータ信頼性の要件が厳しい単一インスタンスのステートフルアプリケーションに最適です。

  • accessModes 制限:マルチアタッチが有効になっていない EBS ディスクは、一度に 1 つの Pod にのみマウントできます。Web クラスターにおけるコンテンツ共有など、複数インスタンス間でデータを共有する必要があるビジネス要件には、ネイティブには対応できません。

    EBS は StatefulSet または単一 Pod デプロイメントに使用することを推奨します。複数レプリカの Deployment には使用しないでください。詳細については、操作ガイドをご参照ください。
  • ゾーンバインディング:リージョン ESSD (エンタープライズ SSD) ディスクを除き、他のすべての EBS ディスクタイプは、同一ゾーン内の Pod にのみマウントできます。

    トポロジー認識スケジューリングを有効にするには、WaitForFirstConsumer StorageClass を使用することを推奨します。
  • インスタンス互換性:EBS ディスクタイプは、サポート対象の ECS インスタンスファミリーと互換性がある必要があります。詳細については、「インスタンスファミリー」をご参照ください。

image NAS

静的/動的 | RWX、RWO、ROX | 課金

  • 説明:NFS プロトコルをサポートする共有ファイルストレージサービスです。複数の Pod による同時読み取り/書き込みアクセスを許可します。容量およびパフォーマンスのエラスティックスケーリング機能を備え、ゴミ箱、スナップショット、バックアップなどのデータ保護機能も提供しています。

  • 適用範囲:Web クラスター間でのコンテンツ共有、CI/CD パイプライン、集中型ログストレージ、複数のアプリケーションインスタンスが同一データセットへの同時読み取り/書き込みアクセスを必要とするあらゆるシナリオ。

  • ネットワーク I/O オーバーヘッド:すべての読み取り/書き込みはネットワーク経由で行われるため、EBS と比較してミリ秒単位の追加遅延が発生します。このソリューションは、データベースなど遅延の影響を受けやすいアプリケーションには推奨されません。

  • 隣接ノイズ:サブパスまたはシェアパスの共有インスタンスでは、動的にプロビジョニングされた PV は同一 NAS バックエンドのサブディレクトリにマッピングされます。これにより、共有帯域幅および IOPS の競合が発生する可能性があります。

  • プロトコルおよびネットワーク制限:NFS プロトコルのみをサポートし、VPC を越えたマウントは許可されていません。

image OSS

静的 ossfs 1.0/ossfs 2.0

動的 ossfs 1.0/ossfs 2.0

RWX、ROX | 課金

  • 説明:大規模かつ低コストのオブジェクトストレージサービスです。ossfs ツールを使用して、OSS バケットを Pod 内のファイルシステムとしてマウントできます。OSS には、POSIX 準拠を重視した ossfs 1.0 と、高スループットおよび高並列性に最適化された ossfs 2.0 の 2 種類のマウントオプションがあります。

  • 適用範囲:AI およびビッグデータ分析のデータレイク、Web サイト用の画像や動画などの静的メディアアセット、アプリケーションデータのバックアップおよびアーカイブ。

  • ネイティブ外のパフォーマンス:Filesystem in Userspace (FUSE) を使用して実装されており、ファイルシステム操作が HTTP API 呼び出しに変換されます。そのため、高遅延およびランダム I/O パフォーマンスの低下が発生します。このソリューションは、データベースや高頻度書き込みワークロードには推奨されません。

  • 不完全な POSIX 準拠:すべての標準ファイルシステム操作を完全にサポートしていません。たとえば、ルートパスに対する chmod および chown は制限されています。これにより、アプリケーションの互換性に問題が発生する可能性があります。

image CPFS for Lingjun

静的/動的 | RWX | 課金

  • 説明:AI およびインテリジェントコンピューティング向けに特別に構築された高性能並列ファイルシステムです。並列 I/O ワークロードに対して優れたスループットおよび IOPS を提供します。

  • 適用範囲:AIGC(AI 生成コンテンツ)の大規模モデルトレーニングおよび推論、自動運転シミュレーションなど、極めて高い並列 I/O パフォーマンスを必要とするシナリオ。

  • コストおよび可用性:特定の高性能ユースケース向けに設計された高コストソリューションです。現在は招待プレビュー段階であり、特定のリージョンでのみ利用可能です。

  • マウント制限:VPC を越えたマウントはサポートされていません。

image CPFS General Edition

静的 | RWX | 課金

  • 説明:ハイパフォーマンスコンピューティング (HPC) ワークロード向けに構築された共有ファイルシステムです。汎用 NAS よりも高い IOPS およびスループットを提供します。

  • 適用範囲:ゲノム解析、ビッグデータ分析、従来の HPC 分野におけるデータキャッシュアクセラレーション。

  • コストおよび可用性:このソリューションは汎用 NAS よりもコストが高く、特定のリージョンでのみ利用可能です。

  • マウント制限:NFS プロトコルのみをサポートし、VPC を越えたマウントは許可されていません。

基本的なパフォーマンス以外にも、ストレージオプションはフェールリカバリ、容量管理、データ保護などの運用面で異なります。選択を絞り込むために、以下の質問を検討してください。

Pod をホストしているノードが障害した場合、アプリケーションおよびデータはどのように復旧しますか?

ノード障害時のアプリケーションの迅速な復旧とデータの安全性は、高可用性アーキテクチャの中核をなします。

  • EBS:CSI ドライバーが、障害ノードからディスクを自動的にデタッチし、新しいノードにアタッチします。

  • NAS、OSS、CPFS:共有ストレージであるため、Pod が新しいノードで起動後すぐに再マウントできます。ストレージのフェールオーバーを待つ必要はありません。復旧速度はアプリケーションの起動時間のみに依存します。

  • HostPath:データは特定のノードに固定されています。そのノードが障害すると、Pod は別のノードで起動できず、元のデータにアクセスできません。ノード間のデータレプリケーションおよび高可用性は、アプリケーション自体で処理する必要があります。

選択ガイド:単一インスタンスのデータベースなど、数分程度の中断を許容できるアプリケーションには EBS を選択することを推奨します。高可用性 Web サービスなど、高速フェールオーバーが必要な場合は、複数レプリカのデプロイメントと共有ストレージを優先してください。最大限のパフォーマンスが必要で、かつアプリケーションがデータレプリケーションおよび高可用性を処理する場合にのみ、ローカルディスクを選択してください。

アプリケーションのストレージ容量をどのように計画および管理しますか?

慎重な容量計画により、コストを抑制し、ストレージ枯渇によるサービス中断を防止できます。PVC 容量リクエストの効果は、ストレージタイプによって異なります。

  • クラウドディスク:PVC で宣言された容量は、割り当てられたクラウドディスクの容量と 1 対 1 に対応します。容量制限が適用され、オンライン拡張がサポートされています。明確な容量要件と厳格なリソース隔離を必要とするシナリオに適しています。

  • OSS:ハードな容量制限はありません。実際の使用量に対してのみ課金されます。PVC 容量は PV のマッチングにのみ使用され、使用量制限の強制には使用されません。

  • NAS および CPFS:

    • 静的ボリューム:PVC 容量は PV のマッチングにのみ使用され、実際の使用量を制限しません。利用可能な容量は、すべての Pod 間で共有されるバックエンドインスタンスの総容量に依存します。

    • 動的ボリューム:NAS(サブパスのみ、allowVolumeExpansiontrue に設定されている場合)および CPFS for Lingjun では、PVC 容量は対応するディレクトリのクォータに変換され、実際の容量制限が適用されます。それ以外の場合は、静的ボリュームと同様の動作になります。

選択ガイド:マルチテナントデータベースなど、正確な容量予算と強力な隔離を必要とするアプリケーションには EBS を使用することを推奨します。ログや静的 Web ファイルなど、多くの Pod がデータを共有し、容量要件が可変であるワークロードには共有ストレージを使用することを推奨します。

誤って削除または破損されたアプリケーションデータをバックアップして保護するにはどうすればよいですか?

選択ガイド:高速かつ一貫性のあるボリューム全体のバックアップおよび復元には EBS スナップショットを使用することを推奨します。長期アーカイブ、コンプライアンス監査、または個別ファイルの復元には NAS または OSS の機能を使用することを推奨します。HostPath を使用する場合は、アプリケーションが堅牢なデータ保護を実装していることを確認する必要があります。

主要コンポーネントと基本概念

  • CSI コンポーネント (csi-plugin、csi-provisioner)

    これらのコンポーネントは、Kubernetes コミュニティが推奨するストレージプラグインの実装です。ACK クラスターでは、デフォルトでプリインストール済みかつ有効になっています。コンポーネントは Alibaba Cloud ストレージ API と連携して、ボリュームの自動作成、マウント、アンマウントを含むライフサイクル全体を管理します。詳細については、「csi-plugin および csi-provisioner コンポーネントの管理」をご参照ください。

  • Container Network File System (CNFS)

    CNFS は、ACK Pro マネージドクラスターで利用可能な強化ストレージ機能です。NAS、OSS、CPFS を Kubernetes のカスタムリソース定義 (CRD) として抽象化し、動的サブディレクトリ作成、クォータ管理、I/O パフォーマンス監視、ゴミ箱管理、分散キャッシュなどの詳細な管理を可能にします。詳細については、「Container Network File System (CNFS)」をご参照ください。

注意事項

CSI を使用する際は、以下の制限事項にご注意ください。

  • クラスターバージョン:クラスターは Kubernetes 1.14 以降を実行している必要があります。クラスターをアップグレードするには、「クラスターの手動アップグレード」をご参照ください。

  • クラスター環境:CSI は ACK クラスターで完全にテストおよび検証されています。Alibaba Cloud 以外の環境や Alibaba Cloud 上のセルフマネージドクラスターなど、ACK 以外のクラスターでは、構成、権限、ネットワークの違いにより、すぐに使用できる機能を提供できない場合があります。

    alibaba-cloud-csi-driver のソースコードを確認し、ご利用の環境に合わせて調整することを推奨します。
  • ノード構成:kubelet パラメーター --enable-controller-attach-detachtrue に設定されている必要があります。

  • オペレーティングシステム:Windows ノードはサポートされていません。

  • RBAC 権限:PersistentVolume (PV) はクラスタースコープのリソースです。PersistentVolumeClaim (PVC) は名前空間スコープです。RBAC 権限を付与する際は、これら 2 つのリソースタイプに必要なアクセスレベルの違いにご注意ください。

    管理者や O&M エンジニアなどのデフォルトの ACK ロールが要件を満たさない場合は、カスタム権限を設定できます。たとえば、デフォルトの O&M エンジニアロールは、承認された名前空間内の PVC に対して読み取り/書き込みアクセスを許可しますが、クラスター全体の PV に対しては読み取り専用アクセスのみを許可します。そのため、このロールを使用して PV を手動で作成することはできません。詳細については、「RAM ユーザーまたは RAM ロールへの RBAC 権限の付与」をご参照ください。

よくある質問

クラスターが使用しているストレージプラグインを確認する方法を教えてください。

以下のいずれかの方法を使用できます。

ACK コンソールでノードのアノテーションを確認する

  1. ACK クラスター ページで、ご利用のクラスター名をクリックします。クラスター詳細ページの左側ナビゲーションウィンドウで、ノード > ノード をクリックします。

  2. ノードリストで管理対象のノードを見つけ、詳細操作 列でクリックします。概要 タブで、ノードの アノテーション を確認します。

    volumes.kubernetes.io/controller-managed-attach-detach: true が存在する場合、ストレージプラグインは CSI です。存在しない場合、プラグインは FlexVolume です。

コマンドで kubelet パラメーターを確認する

ノードにログインし、kubelet パラメーターを確認します。

ps -ef | grep kubelet

期待される出力:

--enable-controller-attach-detach=true
  • true:ストレージプラグインは CSI です。

  • false:ストレージプラグインは FlexVolume です。

CSI プラグインに手動で権限を付与する方法を教えてください。

CSI プラグインは、ボリュームのマウント、アンマウント、作成、削除時に他のクラウドリソースにアクセスするための権限を必要とします。デフォルトでは、ACK クラスターに CSI がインストールされ、必要な権限が設定されています。手動で権限を設定するには、以下の手順を実行します。

  • RAM ロールを使用して権限を付与する(デフォルト):CSI プラグインは、他の Alibaba Cloud サービスのリソースにアクセスするために AliyunCSManagedCsiRole を使用します。詳細については、「ACK サービスロール」をご参照ください。

    • ACK マネージドクラスター:ACK マネージドクラスターの場合、CSI が使用する RAM ロールのトークンは、addon.csi.token という名前の Secret に保存されています。この Secret をマウントすることで、権限を付与し、API アクセスを有効にできます。

    • ACK 専用クラスター:ACK 専用クラスターの場合、CSI はその Pod が実行されている ECS ノードに割り当てられた RAM ロールを継承します。

    RAM ロールへの権限付与の詳細については、「RAM ロールの権限管理」をご参照ください。

  • AccessKey ペアを使用して権限を付与する

    • 環境変数を使用:AccessKey ペアを Kubernetes Secret として作成し、環境変数として CSI Pod に注入します。これにより、デプロイメントテンプレート内に資格情報をプレーンテキストで露出させることを防げます。

    • YAML エントリーを直接使用:AccessKey ペアを CSI YAML ファイルに直接埋め込みます。この方法は本番環境では推奨されません。

付録