Share via


クイック スタート: Azure Kubernetes Service で Azure Container Storage (プレビュー) を使用する

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

前提条件

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

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

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

作業の開始

  • 自分の Azure サブスクリプション ID をメモしておきます。 Azure Elastic SAN をデータ ストレージとして使用する場合は、Azure サブスクリプションの Azure ロールベースのアクセス制御 (Azure RBAC) 所有者ロールが必要です。 所有者レベルのアクセスでは、Elastic SAN の API と対話するための適切なアクセス許可が Azure Container Storage 拡張機能に付与されます。 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>

リソース グループの作成

Azure リソース グループは、グループとして管理する Azure リソースを保持する論理グループです。 使用するリソース グループが既にある場合は、このセクションをスキップできます。

リソース グループを作成する際は、場所の指定を求めるプロンプトが表示されます。 この場所は次のとおりです。

  • リソース グループ メタデータのストレージの場所。
  • リソースの作成時に別のリージョンを指定しない場合に、Azure でリソースが実行される場所です。

az group create コマンドを使用して、リソース グループを作成します。 <resource-group> は作成するリソース グループの名前に置き替え、<location>eastuswestus2westus3、または westeurope などの Azure リージョンに置き替えます。 Azure Container Storage を使用できる Azure リージョンのこのリストを参照してください。

az group create --name <resource-group> --location <location>

リソース グループが正常に作成された場合は、次のような出力が表示されます。

{
  "id": "/subscriptions/<guid>/resourceGroups/myContainerStorageRG",
  "location": "eastus",
  "managedBy": null,
  "name": "myContainerStorageRG",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

ストレージ プールのデータ ストレージ オプションを選択する

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 ノード上の使用可能なエフェメラル ストレージを検出し、ボリューム デプロイ用のドライブを取得します。

Note

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

リソース消費

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

ストレージ プールの種類 CPU コア RAM
Azure Elastic SAN  なし なし
Azure ディスク 1 1 GiB
エフェメラル ディスク - 一時 SSD 1 1 GiB
エフェメラル ディスク - ローカル NVMe コア数の 25% (ノード サイズによって異なります)* 2 GiB

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

*ストレージ プールの種類の "エフェメラル ディスク - ローカル NVMe" では、クラスター ノードに複数の VM SKU の種類を使用している場合、使用される CPU コア数の 25% は、使用される最小の SKU に適用されます。 たとえば、8 コアと 16 コアの VM の種類の組み合わせを使用している場合、リソース使用量は 2 コアです。

クラスターの VM の種類を選択する

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

  • バッキング ストレージとして Azure Elastic SAN または Azure ディスクを使用する場合は、standard_d4s_v5 などの汎用 VM の種類を選択します。
  • ローカル NVMe と一緒にエフェメラル ディスクを使用する場合は、standard_l8s_v3 などの、ストレージ最適化 VM の種類を選択します。
  • 一時 SSD と一緒にエフェメラル ディスクを使用する場合は、Ev3 および Esv3 シリーズなどの一時 SSD ディスクを持つ VM を選択します。

新しい AKS クラスターを作成して Azure Container Storage をインストールする

AKS クラスターが既にデプロイされている場合は、このセクションをスキップして、「既存の AKS クラスターに Azure Container Storage をインストールする」に進みます。

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

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

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

az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_D4s_v3 --node-count 3 --enable-azure-container-storage <storage-pool-type>

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

重要

ストレージ プールのバッキング ストレージとして Azure Elastic SAN を指定し、Azure サブスクリプションへの所有者レベルのアクセス権がない場合、Azure Container Storage のみがインストールされ、ストレージ プールは作成されません。 この場合は、Elastic SAN ストレージ プールを手動で作成する必要があります。

使用可能なストレージ プールを表示する

使用可能なストレージ プールのリストを取得するには、次のコマンドを実行します。

kubectl get sp -n acstor

ストレージ プールの状態を確認するには、次のコマンドを実行します。

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

MessageStoragePool is ready と表示されない場合は、ストレージ プールはまだ作成中であるか、問題が発生しました。 「Azure Container Storage のトラブルシューティング」を参照してください。

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

VM の要件を満たす AKS クラスターが既にある場合は、次のコマンドを実行してクラスターに Azure Container Storage をインストールし、ストレージ プールを作成します。 <cluster-name><resource-group> を独自の値に置き換えます。 <storage-pool-type> を、azureDiskephemeraldisk、または elasticSan に置き換えます。

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

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

重要

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

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

このデプロイが完了するまで 10 から 15 分かかります。

特定のノード プールに 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> --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>

有効にした新しいストレージ プールの種類が、既に有効になっているストレージ プールの種類よりも多くのリソースを占有する場合、 リソース使用量は最大量に変更されます。

ヒント

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

ストレージ プールの種類を無効にする

特定のストレージ プールの種類を使用しなくなったときに、ノード プール内のリソースを解放するためにその種類を無効にする場合は、次のコマンドを実行します。 <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>

Note

無効にしようとしている種類の既存のストレージ プールがある場合、そのストレージ プールの種類は無効になりません。

次のステップ

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