Azure Kubernetes Service (AKS) の Container Storage Interface (CSI) ドライバー

Container Storage Interface (CSI) は、Kubernetes のコンテナー化されたワークロードに任意のブロックおよびファイル ストレージ システムを公開する標準です。 CSI を採用および使用すると、Kubernetes のコア コードを触ったり、そのリリース サイクルを待つことなく、Azure Kubernetes Service (AKS) が Kubernetes で新しい、あるいは既存のストレージ システムを公開するプラグインを記述、デプロイ、反復処理できるようになります。

AKS での CSI ストレージ ドライバーのサポートにより、次をネイティブに使用できるようになります。

  • Azure Disks は、Kubernetes DataDisk リソースを作成するために使用できます。 ディスクには、高パフォーマンス SSD を使用する Azure Premium Storage、または標準 HDD または Standard SSD を使用する Azure Standard Storage を使用できます。 ほとんどの運用ワークロードと開発ワークロードでは Premium Storage を使用します。 Azure Disk は ReadWriteOnce としてマウントされるため、AKS の 1 つのノードでのみ使用できます。 複数のノードで同時にアクセスするストレージ ボリュームの場合は、 Azure Files を使用してください。
  • Azure Files は、Azure Storage アカウントによって支えられる SMB 3.0/3.1 共有をポッドにマウントするために使用できます。 Azure Files を使用すると、複数のノードとポッド間でデータを共有できます。 Azure Files には、標準 HDD を使用する Azure Standard Storage または高パフォーマンス SSD を使用する Azure Premium Storage を使用できます。
  • Azure Blob Storage を使用して、Blob Storage (またはオブジェクト ストレージ) をファイル システムとしてコンテナーまたはポッドにマウントできます。 Blob Storage を使用すると、ログ ファイル データ、イメージまたはドキュメント、HPC などの大規模な非構造化データセットで動作するアプリケーションをクラスターでサポートできます。 さらに、 Azure Data Lake Storage にデータを取り込む場合は、別の中間ファイル システムを構成せずに、AKS でデータを直接マウントして使用できます。

重要

Kubernetes バージョン 1.26 以降、ツリー内永続ボリュームの種類 kubernetes.io/azure-disk および kubernetes.io/azure-file は非推奨となり、サポートされなくなります。 非推奨になった後に、これらのドライバーの削除は予定されていませんが、対応する CSI ドライバー disk.csi.azure.com および file.csi.azure.com への移行を行う必要があります。 ストレージ クラスの移行オプションを確認し、クラスターをアップグレードして Azure Disks と Azure Files CSI ドライバーを使うには、ツリー内から CSI ドライバーへの移行に関する記事を参照してください。

ツリー内ドライバー とは、プラグインの CSI ドライバーに対し、コア Kubernetes コードの一部であるストレージ ドライバーを指します。

注意

CSI ボリュームを削除するときは、PersistentVolume オブジェクトではなく、対応する PersistentVolumeClaim オブジェクトを削除することをお勧めします。 CSI ドライバーの外部プロビジョナーは PersistentVolumeClaim の削除に反応し、その再利用ポリシーに基づいて、CSI ボリューム ドライバー コマンドに対して DeleteVolume 呼び出しを発行してボリュームを削除します。 PersistentVolume オブジェクトはその後に削除されます。

前提条件

  • Azure CLI バージョン 2.42 以降がインストールされて構成されている必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
  • オープンソースの CSI ストレージ ドライバーがクラスターにインストールされている場合は、Azure ストレージ CSI ドライバーを有効にする前にアンインストールします。
  • Kubernetes クラスターで Container Storage Interface (CSI) ドライバー StorageClass を使用する必要がある AKS ポリシー定義に Azure Policyを適用するには、新規および既存のクラスターで Azure Policy アドオンを有効にする必要があります。 既存のクラスターについては、Kubernetes 用の Azure Policy の概要を確認して、それを有効にします。

ディスク暗号化のサポートされるシナリオ

CSI ストレージ ドライバーは、次のシナリオをサポートします。

既存のクラスターで CSI ストレージ ドライバーを有効にする

新しいクラスターで CSI ストレージ ドライバーを有効にするには、ストレージ システムに応じて、次のいずれかのパラメーターを含めます。

az aks update -n myAKSCluster -g myResourceGroup --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller

この操作が完了するまでに数分かかることがあります。 完了すると、クラスターでドライバーを有効にした状態が出力に表示されます。 次の例は、BLOB ストレージの CSI ドライバーを有効にしたときの結果を示すセクションに似ています。

"storageProfile": {
    "blobCsiDriver": {
      "enabled": true
    },

新規または既存のクラスターで CSI ストレージ ドライバーを無効にする

新しいクラスターで CSI ストレージ ドライバーを無効にするには、ストレージ システムに応じて、次のいずれかのパラメーターを含めます。

az aks create -n myAKSCluster -g myResourceGroup --disable-disk-driver --disable-file-driver --disable-blob-driver --disable-snapshot-controller 

既存のクラスターで CSI ストレージ ドライバーを無効にするには、ストレージ システムに応じて、前述のパラメーターのいずれかを使用します。

az aks update -n myAKSCluster -g myResourceGroup --disable-disk-driver --disable-file-driver --disable-blob-driver --disable-snapshot-controller 

ツリー内のカスタム ストレージ クラスを CSI に移行する

ツリー内ドライバーのストレージ クラスを作成している場合、クラスターを 1.21.x にアップグレードした後に CSI 移行が有効になるため、それらのストレージ クラスは引き続き機能します。 CSI 機能を使う場合は、移行を実行する必要があります。

ストレージ クラスの移行オプションを確認し、クラスターをアップグレードして Azure Disks と Azure Files CSI ドライバーを使うには、ツリー内から CSI ドライバーへの移行に関する記事を参照してください。

次の手順