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

Container Service for Kubernetes:CSIベースのストレージソリューションの概要

最終更新日:Oct 23, 2024

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

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

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

image

Alibaba Cloud ACKを使用すると、ポッドをAlibaba Cloudディスク、NAS、OSS、 とローカルボリューム。 次の表に、ボリュームの主な機能、使用シナリオ、および課金ルールを示します。

説明

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

  • PV

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

  • PVC

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

ストレージサービス

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

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

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

主な特徴

シナリオ

課金

Alibaba Cloudディスク

対応

対応

必須

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

  • 高いI/Oと低レイテンシ

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

  • 非データ共有

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

詳細については、「ボリュームとしての Alibaba Cloud ディスクの使用」をご参照ください。

課金可能なディスクの詳細については、「ストレージデバイスのブロック」をご参照ください。 ディスクの料金の詳細については、ECSプロダクトページをご覧ください。

NAS

対応

対応

必須

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

  • データ共有

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

  • ビッグデータ分析

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

  • Webアプリケーション

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

  • ログストレージ

    NASボリュームを使用してログデータを保存することを推奨します。

詳細については、「概要」をご参照ください。

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

OSS

対応

対応

必須

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

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

    OSSボリュームを使用して、上記の種類のファイルを読み取ることができます。

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

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

説明

OSSボリュームは、ossfsを使用してマウントされます。これは、ユーザースペース (FUSE) のファイルシステムとして実装されます。 OSSボリュームを使用すると、書き込みパフォーマンスが制限されます。 高い書き込みパフォーマンスが必要なシナリオでは、他のボリュームを使用することを推奨します。

詳細は、「OSSボリュームの概要」をご参照ください。

課金の概要

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

制限事項

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

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

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

CSIプラグインの制限

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

ボリュームの制限

ボリュームタイプ

制限事項

ディスクボリューム

詳細については、「ボリュームとしての Alibaba Cloud ディスクの使用」をご参照ください。

NAS ボリューム

  • NASは共有ストレージサービスです。 NASファイルシステムをマウントするために使用される永続ボリューム要求 (PVC) は、ポッド間で共有できます。

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

  • NFSv3ファイル共有プロトコルの使用を推奨します。

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

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

  • NASボリュームを使用する前に、CSIプラグインを最新バージョンに更新することを推奨します。

  • マウントターゲットが作成されたら、マウントターゲットが [使用可能] 状態に変わるまで待ちます。

  • NASファイルシステムをアンマウントする前に、NASファイルシステムのマウント対象を削除しないでください。 そうしないと、オペレーティングシステムのハング問題が発生する可能性があります。

OSS ボリューム

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

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

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

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

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

    • OSSボリュームは、オブジェクトを書き込む必要があるシナリオには適していません。 オブジェクトを記述する必要がある場合は、SDKを使用することを推奨します。 SDKを使用してオブジェクトを書き込む方法の詳細については、「Best practice for OSS read/write splitting」をご参照ください。 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設定を変更します。 詳細については、「」をご参照ください。How do I manage the permissions related to OSS volume mounting?.

コンテナストレージ機能

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

ストレージタイプ

機能

ACK管理クラスターとACK専用クラスター

ACKサーバーレスクラスタ

サンドボックスコンテナーをサポートする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 (Customer managed key) ベースの暗号化およびBYOK (Bring Your Own Key) ベースの暗号化

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およびExtreme NASファイルシステム)

image.png

image.png

image.png

クォータ制限 (CNFS)

image.pngACK管理クラスターのみがこの機能をサポートしています。

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

Container Network File System (CNFS) を使用して、ACK Proクラスターのコンテナーストレージリソースを管理できます。 CNFSは、NASおよびOSSボリュームのパフォーマンスを向上させ、サービス品質 (QoS) を強化できます。 CNFSを使用すると、ACKは、Kubernetes CustomResourceDefinitions (CRD) を使用して、Alibaba Cloudの個々のファイルストレージを作成、削除、記述、マウント、監視、およびスケーリングできます。 CNFSは、ごみ箱、リソースクォータ、ボリュームのI/Oパフォーマンス監視などの機能も提供します。 CNFSの詳細については、「CNFS overview」、「NASファイルシステムのライフサイクルの管理」、および「Manage the lifecycle of OSS buckets」をご参照ください。

CSIコンポーネント

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

よくある質問

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

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ペアを環境変数として渡すためのシークレットを作成します。

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

    • ACK管理クラスター: CSIプラグインで使用されるRAMロールのトークンは、addon.csi.tokenという名前のシークレットに格納されます。 RAMロールを使用してCSIプラグインに権限を付与し、プラグインがAPI操作を呼び出すことを許可するには、シークレットをプラグインにマウントするだけです。

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