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

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

最終更新日:Mar 08, 2025

Container Service for Kubernetes (ACK) クラスターでワークロードを実行する場合、アプリケーションデータの永続ストレージ、機密データと構成データのストレージ、ストレージリソースの動的プロビジョニングなど、ストレージ要件が発生する可能性があります。ACK クラスターは、Container Storage Interface (CSI) プラグインに基づいてコンテナーストレージ機能を提供します。この機能は、Alibaba Cloud ストレージサービスを使用して、静的または動的にプロビジョニングされたボリュームを提供および管理します。

サポートされているボリューム

Kubernetes コミュニティでは、CSI プラグインを使用することを推奨しています。ACK のコンテナーストレージ機能は、CSI プラグインに基づいて実装されています。この機能は、Elastic Block Storage (EBS)、File Storage NAS (NAS)、Object Storage Service (OSS)、およびローカルディスクと統合されています。 emptyDir ボリューム、hostPath ボリューム、Secrets、ConfigMap などの Kubernetes ネイティブストレージサービスと完全に互換性があります。次の図は、CSI プラグインでサポートされているボリュームを示しています。

Alibaba Cloud ACK では、ポッドを Alibaba Cloud ディスク、NAS、OSS、ローカルボリュームなどのストレージサービスに自動的に関連付けることができます。次の表は、ボリュームの主な機能、使用シナリオ、および課金ルールを示しています。

説明

CSI プラグインを使用すると、静的および動的にプロビジョニングされたボリュームをマウントできます。静的にプロビジョニングされたボリュームをマウントするには、永続ボリューム (PV) と永続ボリューム要求 (PVC) を手動で変更および作成する必要があります。多数の PV と PVC が必要な場合は、動的にプロビジョニングされたボリュームを作成およびマウントできます。PV と PVC の定義:

  • PV

    PV は、Kubernetes クラスター内のストレージリソースです。 PV のライフサイクルは、PV がマウントされているポッドのライフサイクルとは無関係です。さまざまなタイプの StorageClass を使用して、さまざまなタイプの PV をプロビジョニングできます。

  • PVC

    PVC は、クラスター内のストレージのリクエストです。 PV は、ポッドによって消費されるノードリソースです。 PVC は、PV を消費する要求です。 PV が不足している場合、PVC は PV を動的にプロビジョニングできます。

ストレージサービス

静的にプロビジョニングされたボリューム

動的にプロビジョニングされたボリューム

デフォルトの ACK ストレージ

主な機能

シナリオ

課金

Alibaba Cloud ディスク

サポート

サポート

はい

非共有ストレージ。ディスクは 1 つのノードにのみマウントできます。

  • 高 I/O および低レイテンシ

    ディスクはブロックストレージデバイスであり、データベースやミドルウェアサービスなど、高 I/O パフォーマンスと低レイテンシが必要なシナリオに適しています。

  • データ非共有

    ディスクは 1 つのポッドに対してのみプロビジョニングできます。データ共有を必要としないシナリオでは、ディスクボリュームを使用できます。

詳細については、「ディスクボリューム」をご参照ください。

ディスクの課金項目の詳細については、「ブロックストレージデバイス」をご参照ください。ディスクの価格設定の詳細については、ECS 製品ページをご覧ください。

NAS

サポート

サポート

はい

高パフォーマンスと高スループットを提供する共有ストレージ。

  • データ共有

    NAS ファイルシステムでは、複数のポッドが同じデータにアクセスできます。データを共有する必要がある場合は、NAS ファイルシステムを使用することをお勧めします。

  • ビッグデータ分析

    NAS ファイルシステムは高スループットを提供し、多数のジョブが関係する場合の共有ストレージアクセスの要件を満たします。

  • Web アプリケーション

    NAS ファイルシステムは、Web アプリケーションおよびコンテンツ管理システムにストレージをプロビジョニングできます。

  • ログストレージ

    ログデータを格納するには、NAS ボリュームを使用することをお勧めします。

詳細については、「NAS ボリューム」をご参照ください。

汎用 NAS ファイルシステムの課金

OSS

サポート

サポート

はい

ユーザー空間でファイルシステムをサポートする共有ストレージ。

  • ビデオファイルや画像などの読み取り専用メディアファイル

    前述の種類のファイルを読み取るには、OSS ボリュームを使用できます。

  • Web サイトおよびアプリケーションの読み取り専用構成ファイル

    ossfs は限られたネットワークパフォーマンスを提供し、小さなファイルの読み取りに使用できます。

説明

OSS ボリュームは、ユーザー空間 (FUSE) でファイルシステムとして実装されている ossfs を使用してマウントされます。 OSS ボリュームを使用する場合、書き込みパフォーマンスは制限されます。書き込みパフォーマンスの高いシナリオでは、他のボリュームを使用することをお勧めします。

詳細については、「OSS ボリューム」をご参照ください。

課金概要

Alibaba Cloud ストレージサービスごとに、ボリュームの使用量に異なる制限があります。詳細については、以下のセクションをご参照ください。

制限

ACK クラスターで CSI プラグインを使用する場合は、CSI プラグインと Alibaba Cloud ストレージサービスの制限に注意してください。

クラスターバージョンの制限

ACK クラスターで CSI プラグインを使用する場合は、ACK クラスターで Kubernetes 1.14 以降が実行されており、kubelet の --enable-controller-attach-detach パラメーターが true に設定されていることを確認してください。 ACK クラスターの更新方法の詳細については、「ACK クラスターを手動で更新する」をご参照ください。

CSI プラグインの制限

Alibaba Cloud CSI は Kubernetes コミュニティでオープンソースであり、ACK クラスターをサポートしています。 CSI は、クラスター構成、権限管理、ネットワークの違いなどの理由により、Alibaba Cloud 環境にデプロイされていないクラスターや Alibaba Cloud のセルフマネージドクラスターなどの非 ACK クラスターをシームレスにサポートしていません。クラスターが非 ACK クラスターの場合は、ソースコードを読み取り、CSI の構成を変更して、CSI がクラスターをサポートできるようにすることができます。詳細については、alibaba-cloud-csi-driver をご参照ください。

ボリュームの制限

ボリュームタイプ

制限

ディスクボリューム

  • ディスクは共有できません。ディスクに対してマルチアタッチが有効になっていない場合、各ディスクは 1 つのポッドにのみマウントできます。マルチアタッチ機能の詳細については、「NVMe ディスクのマルチアタッチおよび NVMe 予約機能を使用する」をご参照ください。

  • ディスクと同じゾーンにあるポッドにのみディスクをマウントできます。

  • クラウドディスクをアタッチできる ECS インスタンスタイプは、ディスクのカテゴリによって異なります。

    ディスクボリュームをポッドにマウントする場合は、ポッドが実行されている ECS インスタンスのインスタンスタイプが、マウントするディスクのカテゴリをサポートしていることを確認してください。ディスクカテゴリと ECS インスタンスタイプの間の一致ルールの詳細については、「インスタンスファミリの概要」をご参照ください。

NAS ボリューム

  • NAS は共有ストレージサービスです。 NAS ファイルシステムのマウントに使用される PVC は、ポッド間で共有できます。

  • CSI プラグインを使用してサーバーメッセージブロック (SMB) ファイルシステムをマウントすることはできません。 NFSv3 ファイル共有プロトコルを使用することをお勧めします。

  • NAS ファイルシステムと同じバーチャルプライベートクラウド (VPC) 内の ECS インスタンスにのみ NAS ボリュームをマウントできます。

  • 汎用 NAS ファイルシステムと超高速型 NAS ファイルシステムには、マウント接続性、ファイルシステムの数、ファイル共有プロトコルなどの違いがあります。詳細については、「制限」をご参照ください。

OSS ボリューム

  • OSS バケットは複数のポッドで共有できます。

  • 各アプリケーションで使用される PV の名前は一意である必要があります。

  • OSS バケット内のサブディレクトリをマウントするには、subPath を使用する代わりに PV の path フィールドを設定することをお勧めします。ビジネスで subPath または subPathExpr が使用されている場合、権限の問題によって発生するマウントエラーを回避するために、「subPath または subPathExpr を使用して OSS ボリュームをマウントするときにマウントエラーが発生した場合はどうすればよいですか?」をご参照ください。

  • OSS ボリュームは、ossfs を使用してマウントされた FUSE ファイルシステムです。

    • OSS ボリュームは、オブジェクトを読み取る必要があるシナリオに適しています。たとえば、構成ファイル、ビデオファイル、または画像を読み取る必要がある場合は、OSS ボリュームを使用します。制限の詳細については、「ossfs の制限」をご参照ください。

    • OSS ボリュームは、オブジェクトを書き込む必要があるシナリオには適していません。オブジェクトを書き込む必要がある場合は、SDK を使用することをお勧めします。 SDK を使用してオブジェクトを書き込む方法の詳細については、「OSS 読み取り/書き込み分離のベストプラクティス」をご参照ください。 OSS ボリュームに直接データを書き込むには、ossfs 1.91 以降を使用することをお勧めします。詳細については、「ossfs 1.91 以降のバージョンの紹介とストレステスト」をご参照ください。

    • 1.28 より前の CSI バージョンを使用する場合、ossfs は各ノードでプロセスとして実行されます。 CentOS、Alibaba Cloud Linux、ContainerOS、Anolis OS などのノード OS をサポートしています。ノードの OS がサポートされていない場合は、CSI を更新して ossfs を実行します。

  • OSS ボリュームがルートパスにマウントされている場合、chmod または chown 操作を実行することはできません。これらの操作を実行するには、mp_umask 設定を変更します。詳細については、「OSS ボリュームのマウントに関連する権限を管理するにはどうすればよいですか?」をご参照ください。

コンテナーストレージ機能

次の表に、さまざまな ACK クラスターでサポートされているストレージ機能を示します。

ストレージタイプ

機能

ACK マネージドクラスターと ACK 専用クラスター

ACK Serverless クラスター

サンドボックスコンテナーをサポートする ACK クラスター

EBS

ディスクのマウントとアンマウント

image.png

image.png

image.png

オンラインサイズ変更

image.png

image.png

image.png

スナップショット

image.png

image.png

image.png

コンテナー I/O 監視

image.png

image.png

image.png

ファイルシステム

XFS と ext4 がサポートされています。

XFS と ext4 がサポートされています。

XFS と ext4 がサポートされています。

ブロックデバイスとベアメタルデバイス

image.png

image.png

image.png

スナップショットからのデータ復元

image.png

image.png

image.png

ディスクキュー設定

image.png

image.png

image.png

カスタマー マネージド キー (CMK) ベースの暗号化と Bring Your Own Key (BYOK) ベースの暗号化

image.png

image.png

image.png

複数ゾーン対応

image.png

image.png

image.png

カスタムラベル

image.png

image.png

image.png

クロスホスト移行

image.png

image.png

image.png

NAS

NAS ファイルシステムの作成、マウント、およびアンマウント

image.png

image.png

image.png

Samba ファイルシステムのマウントとアンマウント

image.png

image.png

image.png

ゴミ箱 (CNFS)

image.png

image.png

image.png

動的にプロビジョニングされたボリュームのサブディレクトリまたは共有ディレクトリ (CNFS)

image.png

image.png

image.png

CMK ベースの暗号化 (CNFS および超高速型 NAS ファイルシステム)

image.png

image.png

image.png

クォータ制限 (CNFS)

image.png ACK マネージドクラスターのみがこの機能をサポートしています。

image.png

image.png

容量と I/O の監視 (CNFS)

image.png

image.png

image.png

オンラインサイズ変更 (CNFS)

image.png

image.png

image.png

OSS

OSS バケットのマウントとアンマウント

image.png

image.png

image.png

BYOK ベースの暗号化

image.png

image.png

image.png

ローカルストレージ

Linux Volume Manager (LVM) 管理ブロックストレージ

image.png

image.png

image.png

自動ボリュームグループ

image.png

image.png

image.png

LVM 管理容量対応スケジューリング

image.png

image.png

image.png

直接アクセス可能な永続メモリ (PMem)

image.png

image.png

image.png

LVM 管理 PMem

image.png

image.png

image.png

CNFS

コンテナー ネットワーク ファイル システム (CNFS) を使用して、ACK Pro マネージドクラスター内のコンテナー ストレージ リソースを管理できます。CNFS は、NAS および OSS ボリュームのパフォーマンスを向上させ、サービス品質 (QoS) を適用できます。CNFS を使用すると、ACK は Kubernetes CustomResourcecDefinitions (CRD) を使用して、Alibaba Cloud の個々のファイルストレージの作成、削除、記述、マウント、監視、およびスケーリングを実行できます。CNFS は、ゴミ箱、リソース クォータ、ボリュームの I/O パフォーマンス監視などの機能も提供します。CNFS の詳細については、「CNFS」、「NAS ファイルシステムのライフサイクルを管理する」、および「OSS バケットのライフサイクルを管理する」をご参照ください。

CSI コンポーネント

CSI プラグインには、ボリュームを自動的に作成、マウント、およびアンマウントするために使用される csi-plugin および csi-provisioner コンポーネントが含まれています。デフォルトでは、CSI コンポーネントは ACK マネージドクラスターおよび ACK 専用クラスターにデプロイされます。 CSI コンポーネントとコンポーネントの更新方法の詳細については、「CSI プラグインの管理」をご参照ください。

RBAC 権限

PV はクラスターレベルのリソースですが、PVC は名前空間レベルのリソースです。 管理者や O&M エンジニアなど、ACK によって提供されるデフォルトのロールがアクセスコントロール要件を満たしていない場合は、カスタム RBAC ルールを構成できます。たとえば、O&M エンジニアロールは、承認された名前空間内の PVC に対する読み取りおよび書き込み権限と、クラスター全体の PV に対する読み取り専用アクセスを付与します。ただし、このロールは、新しい PV の作成などの操作を制限します。このような場合は、RBAC ルールをカスタマイズできます。

詳細については、「RBAC を使用してクラスター内のリソースに対する操作権限を管理する」をご参照ください。

よくある質問

クラスターで使用されているストレージプラグインを確認するにはどうすればよいですか?

クラスターで使用されているストレージプラグインを確認するには、ACK コンソールでノードアノテーションを確認するか、kubectl で kubelet パラメーターを確認します。

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

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、変更するクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノード] を選択します。

  3. ノードページで、管理するノードを見つけ、[操作] 列の [詳細] をクリックし、[詳細] を選択します。

    [概要] タブで、ノードのアノテーションを確認します。volumes.kubernetes.io/controller-managed-attach-detach: true アノテーションが存在する場合、クラスターは CSI プラグインを使用しています。それ以外の場合、クラスターは FlexVolume プラグインを使用しています。

kubectl で kubelet パラメーターを確認する

次のコマンドを実行して、kubelet パラメーターを確認します。

ps -ef | grep kubelet

予期される出力:

--enable-controller-attach-detach=true
  • --enable-controller-attach-detach パラメーターの値が true の場合、クラスターは CSI プラグインを使用しています。

  • --enable-controller-attach-detach パラメーターの値が false の場合、クラスターは FlexVolume プラグインを使用しています。

CSI プラグインに手動で権限を付与するにはどうすればよいですか?

CSI プラグインを使用してボリュームをマウント、アンマウント、作成、および削除するには、プラグインに他のクラウドリソースにアクセスするための権限を付与する必要があります。ほとんどの場合、CSI プラグインはデフォルトでクラスターにインストールされ、関連する権限が付与されます。クラスター内の CSI プラグインに手動で権限を付与する場合は、AccessKey ペアまたは Resource Access Management (RAM) ロールを使用できます。デフォルトでは、システムは RAM ロールを使用して CSI プラグインに権限を付与します。

  • AccessKey ペアを使用する

    • CSI デプロイメントテンプレートで AccessKey ペアを指定します。

    • AccessKey ペアを環境変数として渡す Secret を作成します。

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

    • ACK マネージドクラスター: CSI プラグインで使用される RAM ロールのトークンは、addon.csi.token という名前の Secret に格納されます。 RAM ロールを使用して CSI プラグインに権限を付与し、プラグインが API 操作を呼び出せるようにするには、Secret をプラグインにマウントするだけで済みます。

    • ACK 専用クラスター: CSI プラグインは、ポッドが存在する Elastic Compute Node (ECS) ノードに割り当てられた RAM ロールを使用します。