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プラグインでサポートされているボリュームを示しています。
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つのノードにのみマウントできます。 |
詳細については、「ボリュームとしての Alibaba Cloud ディスクの使用」をご参照ください。 | 課金可能なディスクの詳細については、「ストレージデバイスのブロック」をご参照ください。 ディスクの料金の詳細については、ECSプロダクトページをご覧ください。 |
NAS | 対応 | 対応 | 必須 | 高いパフォーマンスと高いスループットを提供する共有ストレージ。 |
詳細については、「概要」をご参照ください。 | |
OSS | 対応 | 対応 | 必須 | ユーザースペースのファイルシステムをサポートする共有ストレージ。 |
説明 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 ボリューム |
|
OSS ボリューム |
|
コンテナストレージ機能
次の表に、さまざまなACKクラスターでサポートされているストレージ機能を示します。
ストレージタイプ | 機能 | ACK管理クラスターとACK専用クラスター | ACKサーバーレスクラスタ | サンドボックスコンテナーをサポートするACKクラスター |
EBS | ディスクの取り付けと取り外し | |||
オンラインサイズ変更 | ||||
スナップショット | ||||
コンテナI/Oモニタリング | ||||
ファイルシステム | XFSとext4がサポートされています。 | XFSとext4がサポートされています。 | XFSとext4がサポートされています。 | |
ブロックデバイスとベアメタルデバイス | ||||
スナップショットからのデータ復元 | ||||
ディスクキューの設定 | ||||
CMK (Customer managed key) ベースの暗号化およびBYOK (Bring Your Own Key) ベースの暗号化 | ||||
マルチゾーン認識 | ||||
カスタムラベル | ||||
クロスホスト移行 | ||||
NAS | NASファイルシステムの作成、マウント、マウント解除 | |||
Sambaファイルシステムのマウントとアンマウント | ||||
リサイクルビン (CNFS) | ||||
動的にプロビジョニングされたボリュームのサブディレクトリまたは共有ディレクトリ (CNFS) | ||||
CMKベースの暗号化 (CNFSおよびExtreme NASファイルシステム) | ||||
クォータ制限 (CNFS) | ACK管理クラスターのみがこの機能をサポートしています。 | |||
容量およびI/Oモニタリング (CNFS) | ||||
オンラインサイズ変更 (CNFS) | ||||
OSS | OSSバケットのマウントとアンマウント | |||
BYOKベースの暗号化 | ||||
ローカルストレージ | Linux Volume Manager (LVM) 管理ブロックストレージ | |||
自動ボリュームグループ | ||||
LVM管理容量対応スケジューリング | ||||
直接アクセス可能な永続メモリ (PMem) | ||||
LVMで管理されるPMem |
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コンソールでノードの注釈を確認する
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[ノード] ページで、管理するノードを見つけ、[操作] 列の [詳細] をクリックし、[詳細] を選択します。
[概要] タブで、ノードのアノテーションを確認します。
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ロールを使用します。