次の方法で共有


クイック スタート: Azure Kubernetes Service で Azure Container Storage (バージョン 1.x.x) を使用する

Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 このクイック スタートでは、Linux ベースの Azure Kubernetes Service (AKS) クラスターに接続し、Azure Container Storage (バージョン 1.x.x) をインストールし、Azure CLI を使用してストレージ プールを作成する方法について説明します。

Important

この記事では、Azure Container Storage (バージョン 1.x.x) をインストールする方法について説明します。インストールには、バージョン固定パラメーター --container-storage-version 1 が明示的に必要になりました。 Azure コンテナー ストレージ (バージョン 2.x.x) を使用できるようになりました。

[前提条件]

  • Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

  • この記事には、Azure CLI の最新バージョンが必要です。 「Azure CLIをインストールする方法」を参照してください。 Azure Cloud Shell で Bash 環境を使用している場合は、最新バージョンが既にインストールされています。 Azure Cloud Shell ではなくローカルでコマンドを実行する場合は、必ず管理特権で実行してください。 詳細については、「Azure Cloud Shell の概要」を参照してください。

  • Kubernetes コマンド ライン クライアント kubectl が必要です。 Azure Cloud Shell を使用している場合は既にインストールされています。または、az aks install-cli コマンドを実行してローカルにインストールできます。

  • ターゲット リージョンが Azure Container Storage リージョンでサポートされているかどうかを確認します。

  • AKS クラスターをまだ作成していない場合は、 AKS クラスターのインストールの手順に従います。

作業の開始

  • 自分の Azure サブスクリプション ID をメモしておきます。 Azure Elastic SAN をデータ ストレージとして使用する場合は、Azure Container Storage 所有者ロールまたは Azure Container Storage 共同作成者ロールが Azure サブスクリプションに割り当てられている必要があります。 所有者レベルのアクセス権があると、Azure Container Storage 拡張機能をインストールすることができます。また、そのストレージ リソースへのアクセスが許可され、Azure Elastic SAN リソースを構成するアクセス許可が付与されます。 共同作成者レベルのアクセス権があると、拡張機能をインストールすることができます。また、そのストレージ リソースへのアクセスが許可されます。 Azure ディスクまたはエフェメラル ディスクをデータ ストレージとして使用する予定がある場合は、サブスクリプションに対する特別なアクセス許可は必要ありません。

  • Azure Cloud Shell を起動するか、ローカル インストールを使用している場合は、 az login コマンドを使用して Azure にサインインします。

  • Azure Cloud Shell を使用している場合、ストレージをマウントするように求められることがあります。 ストレージ アカウントを作成する Azure サブスクリプションを選択し、[作成] を選択します。

必要な拡張機能をインストールする

次のコマンドを実行して、 k8s-extension の最新バージョンを追加またはアップグレードします。

az extension add --upgrade --name k8s-extension

サブスクリプションのコンテキストを設定する

az account set コマンドを使用して Azure サブスクリプションのコンテキストを設定します。 az account list --output table コマンドを実行すると、アクセス権を持つすべてのサブスクリプションのサブスクリプション ID を表示できます。 <subscription-id> は、実際のサブスクリプション ID で置き換えてください。

az account set --subscription <subscription-id>

クラスターに接続する

クラスターに接続するには、Kubernetes コマンド ライン クライアント kubectl を使用します。 Azure Cloud Shell を使用している場合は既にインストールされています。または、az aks install-cli コマンドを実行してローカルにインストールできます。

  1. kubectl コマンドを使用して、クラスターに接続するように az aks get-credentials を構成します。 次のコマンドで、以下を行います。

    • 資格情報をダウンロードし、それを使用するように Kubernetes CLI を構成します。
    • ~/.kube/config (Kubernetes 構成ファイルの既定の場所) を使用します。 --file 引数を使用して、Kubernetes 構成ファイルの別の場所を指定できます。
    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    
  2. kubectl get コマンドを使用して、ご利用のクラスターへの接続を確認します。 このコマンドでは、クラスター ノードの一覧が返されます。

    kubectl get nodes
    
  3. 次の出力例は、クラスター内のノードを示しています。 すべてのノードの状態が [準備完了] と表示されていることを確認します。

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-34832848-vmss000000   Ready    agent   80m   v1.25.6
    aks-nodepool1-34832848-vmss000001   Ready    agent   80m   v1.25.6
    aks-nodepool1-34832848-vmss000002   Ready    agent   80m   v1.25.6
    

    ノード プールの名前を書き留めます。 この例では、nodepool1 です。

ストレージ プール用の記憶域オプションを選択する

Azure Container Storage をデプロイする前に、ストレージ プールとボリュームの作成に使用するバックエンド ストレージ オプションを決定する必要があります。 現在、次の 3 つのオプションを使用できます。

  • Azure Elastic SAN: Azure Elastic SAN は、汎用データベース、ストリーミングおよびメッセージング サービス、CI/CD 環境、およびその他の階層 1/階層 2 のワークロードに適しています。 ストレージは、作成されたボリュームおよびボリューム スナップショットごとにオンデマンドでプロビジョニングされます。 複数のクラスターが 1 つの SAN に同時にアクセスできますが、永続ボリュームには一度に 1 つのコンシューマーのみがアタッチできます。

  • Azure ディスク: Azure ディスクは、MySQL、MongoDB、PostgreSQL などのデータベースに適しています。 ストレージは、ターゲット コンテナーのストレージ プール サイズと最大ボリューム サイズに従ってプロビジョニングされます。

  • エフェメラル ディスク: このオプションでは、AKS クラスター ノード上のローカル NVMe ドライブまたは一時 SSD が使用されます。 待機時間の影響を受けやすい (待機時間が短い) ため、データ持続性の要件がないアプリケーションや、Cassandra などの組み込みのデータ レプリケーション サポートを使用するアプリケーションに最適です。 AKS は、AKS ノード上の使用可能なエフェメラル ストレージを検出し、ボリューム デプロイ用のドライブを取得します。

Azure Elastic SAN と Azure Disks の場合、Azure Container Storage はインストールの一環としてバッキング ストレージをデプロイします。 独自の Elastic SAN または Azure Disk を作成する必要はありません。 Elastic SAN を使用するには、Azure サブスクリプションで Azure Container Storage 所有者 ロールまたは Azure Container Storage 共同作成者 ロールが必要です。

リソース消費

Azure Container Storage では、サービスのコンポーネントを実行するために特定のノード リソースが必要です。 Azure Container Storage のインストール時に指定する記憶域プールの種類の選択に基づいて、次のリソースが使用されます。

記憶域プールの種類 CPU コア RAM
Azure Elastic SAN  None None
Azure ディスク 1 1 GiB
エフェメラル ディスク - 一時的 SSD 1 1 GiB
エフェメラル ディスク - ローカル NVMe (スタンダード ティア) コアの 25% (パフォーマンス レベルを更新できます)* 1 GiB

使用されるリソースはノードごとに、Azure Container Storage がインストールされるノード プール内のノードごとに消費されます。 ノードに十分なリソースがない場合、Azure Container Storage の実行は失敗します。 Kubernetes は、これらの失敗したポッドの初期化を自動的に再試行するため、リソースが解放された場合は、これらのポッドを再初期化できます。

*記憶域プールの種類のエフェメラル ディスク - Standard (既定) パフォーマンス レベルのローカル NVMe では、クラスター ノードに複数の VM SKU の種類を使用している場合、使用される CPU コアの 25% は、使用される最小 SKU に適用されます。 たとえば、8 コアと 16 コアの VM の組み合わせを使用している場合、リソース消費量は 2 コアです。 パフォーマンス レベルを更新して、コアの割合を増やし、IOPS を向上させることができます。

クラスターの VM の種類が次の条件を満たしていることを確認する

Azure Container Storage を使用するには、少なくとも 3 つの Linux VM のノード プールが必要です。 各 VM には、少なくとも 4 つの仮想 CPU (vCPU) が必要です。 Azure Container Storage は、拡張機能がデプロイされるすべての VM で I/O 処理に 1 つのコアを使用します。

クラスター ノードの VM の種類を選択するときは、次のガイドラインに従ってください。 Azure Premium Storage をサポートする VM の種類を選ぶ必要があります。

  • Azure Elastic SAN または Azure Disks をバッキング ストレージとして使用する場合は、standard_d4s_v5などの汎用 VM の種類を選択します。
  • ローカル NVMe でエフェメラル ディスクを使用する場合は、ローカル NVMe データ ディスク ( ストレージ最適化 VM SKUGPU 高速 VM SKU など) をサポートする VM SKU を選択します。
  • 一時 SSD でエフェメラル ディスクを使用する場合は、 Ev3 や Esv3 シリーズなどの一時 SSD ディスクを持つ VM を選択します。

AKS クラスターに Azure Container Storage をインストールする

インストール コマンドは、AKS クラスターで実行されている Azure Container Storage のプレビュー インスタンスが既にあるか、初めてクラスターに Azure Container Storage をインストールするかによって異なります。

プレビュー インストールを GA にアップグレードする

クラスターで実行されている Azure Container Storage のプレビュー インスタンスが既にある場合は、次のコマンドを実行して、最新の一般公開 (GA) バージョンに更新することをお勧めします。 クラスターに初めて Azure Container Storage をインストールする場合は、代わりに Azure Container Storage のインストールと記憶域プールの作成に進みます特定のノード プールに Azure Container Storage をインストールすることもできます。

az k8s-extension update --cluster-type managedClusters --cluster-name <cluster-name> --resource-group <resource-group> --name azurecontainerstorage --version 1.1.0 --auto-upgrade false --release-train stable

<cluster-name><resource-group>は、必ず独自の値に置き換えてください。

Azure Container Storage をインストールして記憶域プールを作成する

インストールする前に、AKS クラスターが VM の要件を満たしていることを確認します。

次のコマンドを実行して、クラスターに Azure Container Storage をインストールし、記憶域プールを作成します。 <cluster-name><resource-group> を独自の値に置き換えます。 <storage-pool-type> を、azureDiskephemeralDisk、または elasticSan に置き換えます。 ephemeralDiskを選択した場合は、--storage-pool-optionを指定することもでき、値はNVMeまたはTempできます。

このコマンドを実行すると、システム ノード プールで Azure Container Storage が有効になり、既定では nodepool1* という名前になります。 他のノード プールで有効にする場合は、「特定のノード プール に Azure Container Storage をインストールする」を参照してください。 追加のパラメーターを指定する場合は、 Azure Container Storage ストレージ プールのパラメーターに関するページを参照してください。

*acstor.azure.com/io-engine:acstor ラベルを持つ既存のノード プールがある場合、Azure Container Storage は既定でそこにインストールされます。 それ以外の場合は、システム ノード プールにインストールされます。

Important

Azure portal を使用して AKS クラスターを作成した場合: クラスター内にユーザー ノード プールとシステム/エージェント ノード プールを設置する可能性が大きいと考えられます。 ただし、クラスターがシステム ノード プールのみで構成されている場合は (Azure portal で作成したテスト/開発クラスターはこれに該当します)、まず新しいユーザー ノード プールを追加し、その後にラベルを付ける必要があります。 これは、Azure portal を使用して AKS クラスターを作成すると、テイント CriticalAddOnsOnly がシステム/エージェント ノード プールに追加され、システム ノード プールへの Azure Container Storage のインストールがブロックされるためです。 Azure CLI を使用して AKS クラスターを作成する場合には、このテイントは追加されません。

Azure Elastic SAN でマルチゾーン AKS クラスターを使用している場合: ゾーン冗長ストレージ (ZRS) Elastic SAN を使用する必要があります。 Elastic SAN 記憶域プールの既定値は、ローカル冗長ストレージ (LRS) です。 Elastic SAN に対して ZRS を有効にするには、ストレージ プールの種類に elasticSan を使用し、次の CLI コマンドに --storage-pool-sku Premium_ZRS フラグを追加します。

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type> --container-storage-version 1

デプロイには 10 ~ 15 分かかります。 完了すると、Azure Container Storage がインストールされた AKS クラスター、選択したストレージ プールの種類のコンポーネントが有効になり、既定の記憶域プールが作成されます。 追加の記憶域プールの種類を有効にして追加の記憶域プールを作成する場合は、「 追加の記憶域プールの種類を有効にする」を参照してください。

Important

ストレージ プールのバッキング ストレージとして Azure Elastic SAN を指定し、Azure サブスクリプションに Azure Container Storage 所有者 ロールまたは Azure Container Storage 共同作成者 ロールが割り当てられない場合、Azure Container Storage のインストールは失敗し、記憶域プールは作成されません。 これらのロールを持たない 追加の記憶域プールの種類として Azure Elastic SAN を有効 にしようとすると、以前のインストールプールと記憶域プールは影響を受けず、Elastic SAN 記憶域プールは作成されません。

特定のノード プールに Azure Container Storage をインストールする

特定のノード プールに Azure Container Storage をインストールする場合は、次の手順に従います。 ノード プールには、少なくとも 3 つの Linux VM が含まれている必要があります。

  1. 次のコマンドを実行して、使用可能なノード プールの一覧を表示します。 <resource-group><cluster-name> を独自の値に置き換えます。

    az aks nodepool list --resource-group <resource-group> --cluster-name <cluster-name>
    
  2. 次のコマンドを実行して、特定のノード プールに Azure Container Storage をインストールします。 <cluster-name><resource-group> を独自の値に置き換えます。 <storage-pool-type> を、azureDiskephemeralDisk、または elasticSan に置き換えます。 ephemeralDiskを選択した場合は、--storage-pool-option を指定することもできます。値はNVMeまたはTempできます。

    az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type> --container-storage-version 1 --azure-container-storage-nodepools <comma separated values of nodepool names>
    

追加の記憶域プールの種類を有効にする

Azure Container Storage のインストール中に最初に有効にされなかった記憶域プールの種類を有効にする場合は、次のコマンドを実行します。 <cluster-name><resource-group> を独自の値に置き換えます。 <storage-pool-type>には、azureDiskephemeralDisk、またはelasticSanを指定します。

このコマンドを使用して追加の記憶域プール パラメーターを指定する場合は、 次の表を参照してください。

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type> --container-storage-version 1

有効にした新しい記憶域プールの種類が、既に有効になっている記憶域プールの種類よりも多くのリソースを占有する場合、 リソース消費量 は最大量に変わります。

ヒント

クラスターに新しいノード プールを追加し、そのノード プールで Azure Container Storage を実行する場合は、--azure-container-storage-nodepools <nodepool-name> コマンドを実行するときに、az aks updateを使用してノード プールを指定できます。

使用可能な記憶域プールを表示する

使用可能な記憶域プールの一覧を取得するには、次のコマンドを実行します。

kubectl get sp -n acstor

記憶域プールの状態を確認するには、次のコマンドを実行します。

kubectl describe sp <storage-pool-name> -n acstor

MessageStoragePool is readyと表示されない場合、記憶域プールはまだ作成中であるか、問題が発生している可能性があります。 Azure Container Storage のトラブルシューティングを参照してください。

記憶域プールの種類を無効にする

特定の記憶域プールの種類を使用しなくなったため、ノード プール内のリソースを解放するために無効にする場合は、次のコマンドを実行します。 <cluster-name><resource-group> を独自の値に置き換えます。 <storage-pool-type>には、azureDiskephemeralDisk、またはelasticSanを指定します。

az aks update -n <cluster-name> -g <resource-group> --disable-azure-container-storage <storage-pool-type>

無効にしようとしている種類の既存の記憶域プールがある場合、記憶域プールの種類は無効になりません。

次のステップ

ボリュームを作成するには、選択したバッキング ストレージの種類のリンクを選択します。