Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 このチュートリアルでは、 Azure Kubernetes Service (AKS) クラスターを作成し、クラスターに Azure Container Storage (バージョン 1.x.x) をインストールします。 AKS クラスターが既にデプロイされている場合は、このチュートリアルの手動の手順に従う代わりに、 このクイック スタートを使用して Azure Container Storage (バージョン 1.x.x) をインストールすることをお勧めします。
Important
この記事では、Azure Container Storage (バージョン 1.x.x) をインストールする方法について説明します。インストールには、バージョン固定パラメーター --container-storage-version 1 が明示的に必要になりました。
Azure Container Storage (バージョン 2.x.x) を使用できるようになりました。
- リソース グループを作成する
- データ ストレージ オプションと VM の種類を選択する
- AKS クラスターを作成する
- クラスターに接続する
- ノード プールにラベルを付ける
- AKS マネージド ID に Azure Container Storage オペレーター ロールを割り当てる
- Azure Container Storage (バージョン 1.x.x) をインストールする
[前提条件]
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
この記事では、Azure CLI バージョン v2.83.0 以降が必要です。 詳細については、Azure CLIのインストール方法に関するページを参照してください。 問題が発生した場合は、
aks-previewなどの拡張機能を無効にします。 必要に応じて拡張機能をインストールまたは更新します。az extension add --upgrade --name k8s-extension-
az extension add --upgrade --name elastic-san(Elastic SAN のみ)
Kubernetes コマンド ライン クライアント (
kubectl) が必要です。 Azure Cloud Shell を使用している場合は、既にインストールされています。az aks install-cliコマンドを実行して、ローカルにインストールできます。ターゲット リージョンが Azure Container Storage リージョンでサポートされているかどうかを確認します。
- ノード プールの構成を計画します。
- OS の種類として Linux を使用します (Windows はサポートされていません)。
- ストレージ最適化 VM や GPU アクセラレータ VM など、ローカル NVMe ストレージの種類を使用する予定の場合は、ローカル NVMe データ ディスクをサポートする仮想マシン (VM) SKU を選択します。
- 既存のクラスターの場合は、Azure Container Storage を有効にする前に、ノード プールでサポートされている VM SKU が既に使用されていることを確認します。
作業の開始
Azure サブスクリプション ID を書き留めます。 データ ストレージとして Azure Elastic SAN を使用する場合は、Azure サブスクリプションに割り当てられた Azure Container Storage 所有者 ロールまたは Azure Container Storage 共同作成者 ロールが必要です。 所有者レベルのアクセスを使用すると、Azure Container Storage 拡張機能をインストールし、そのストレージ リソースへのアクセスを許可し、Azure Elastic SAN リソースを構成するアクセス許可を付与できます。 共同作成者レベルのアクセスを使用すると、拡張機能をインストールし、そのストレージ リソースへのアクセスを許可できます。 Azure Disks またはエフェメラル ディスクをデータ ストレージとして使用する予定がある場合は、サブスクリプションに対する特別なアクセス許可は必要ありません。
Azure Cloud Shell を起動するか、ローカル インストールを使用している場合は、 az login コマンドを使用して Azure CLI にサインインします。
Azure Cloud Shell を使用している場合は、ストレージをマウントするように求められる場合があります。 ストレージ アカウントを作成する Azure サブスクリプションを選択し、[ 作成] を選択します。
サブスクリプション コンテキストを設定する
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-name> を作成するリソース グループの名前に置き換え、<location> を eastus、westus2、westus3、または westeurope などの Azure リージョンに置き換えます。
az group create --name <resource-group-name> --location <location>
リソース グループが正常に作成された場合は、次のような出力が表示されます。
{
"id": "/subscriptions/<guid>/resourceGroups/myContainerStorageRG",
"location": "eastus",
"managedBy": null,
"name": "myContainerStorageRG",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
データ ストレージ オプションと仮想マシンの種類を選択する
クラスターを作成する前に、ストレージ プールに使用するバックエンド ストレージ オプションを決定します。 異なるストレージ サービスは、クラスター ノードとして異なる仮想マシン (VM) の種類で最適に動作し、記憶域プールの前にクラスターを作成します。
データ ストレージ のオプション
Azure Elastic SAN: Azure Elastic SAN は、汎用データベース、ストリーミングおよびメッセージング サービス、CD/CI 環境、およびその他の階層 1/層 2 のワークロードに適しています。 ストレージは、作成されたボリュームやボリュームスナップショットごとにオンデマンドでプロビジョニングされます。 複数のクラスターが 1 つの SAN に同時にアクセスできますが、永続ボリュームは一度に 1 つのコンシューマーのみがアタッチできます。
Azure ディスク: Azure ディスクは、MySQL、MongoDB、PostgreSQL などのデータベースに適しています。 ストレージは、ターゲット コンテナー記憶域プールのサイズと最大ボリューム サイズごとにプロビジョニングされます。
エフェメラル ディスク: このオプションは、AKS ノード上のローカル NVMe または一時 SSD ドライブを使用し、待機時間がミリ秒未満であるため、データの持続性を必要としないアプリケーションや、Cassandra などのデータ レプリケーションを含むアプリケーションに最適です。 AKS は、AKS ノードで使用可能なエフェメラル ストレージを検出し、ボリュームデプロイ用のドライブを取得します。
リソース消費
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 でエフェメラル ディスクを使用する場合は、 ストレージ最適化 VM SKU や GPU 高速 VM SKU など、ローカル NVMe ディスクをサポートする VM SKU を選択します。
- 一時 SSD でエフェメラル ディスクを使用する場合は、 Ev3 や Esv3 シリーズなどの一時 SSD ディスクを持つ VM を選択します。
新しい AKS クラスターを作成して Azure Container Storage をインストールする
AKS クラスターが既にデプロイされている場合は、 このクイック スタートのインストール手順に従います。
次のコマンドを実行して、新しい AKS クラスターを作成し、Azure Container Storage をインストールして、ストレージ プールを作成します。
<cluster-name>と<resource-group>を独自の値に置き換え、使用する VM の種類を指定します。
<storage-pool-type>をazureDisk、ephemeralDisk、またはelasticSanに置き換えます。
ephemeralDiskを選択した場合は、--storage-pool-optionも指定する必要があり、値はNVMeまたはTempできます。
このコマンドを実行すると、3 つの Linux VM を使用して、システム ノード プール* 上の Azure Container Storage が有効になります。 記憶域プールの種類にローカル NVMe を指定する場合は、必ずノード数を 4 以上に設定するか、コマンドの実行に失敗します。
既定では、システム ノード プールには nodepool1 という名前が付けられます。 他のノード プールで Azure Container Storage を有効にする場合は、「特定のノード プール に Azure Container Storage をインストールする」を参照してください。 このコマンドを使用して記憶域プールのパラメーターをさらに指定する場合は、 次の表を参照してください。
acstor.azure.com/io-engine:acstor ラベルを持つ既存のノード プールがある場合、Azure Container Storage は既定でそこにデータ プレーン コンポーネントをインストールします。 それ以外の場合は、優先ノード プールを Azure CLI 経由で acstor に渡すことができます。 クラスターにシステム ノード プールしかない場合は、既定でラベル付けされ、Azure Container Storage に使用されます。 データ プレーン コンポーネントのみが、ラベル付けされたノード プールに制限されます。 Azure Container Storage のコントロール プレーン コンポーネントは、ラベル付けされたノードに限定されるものではなく、システム ノード プールでも実行できます。
Important
Azure Elastic SAN でマルチゾーン AKS クラスターを使用している場合: ゾーン冗長ストレージ (ZRS) Elastic SAN を使用する必要があります。 Elastic SAN 記憶域プールの既定値は、ローカル冗長ストレージ (LRS) です。 Elastic SAN に対して ZRS を有効にするには、ストレージ プールの種類に elasticSan を使用し、次の CLI コマンドに --storage-pool-sku Premium_ZRS フラグを追加します。
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> --container-storage-version 1 --generate-ssh-keys
デプロイには 10 ~ 15 分かかります。 完了すると、Azure Container Storage がインストールされた AKS クラスター、選択したストレージ プールの種類のコンポーネントが有効になり、既定の記憶域プールが作成されます。 より多くの記憶域プールの種類を有効にして、より多くの記憶域プールを作成する場合は、「 記憶域プールの種類を増やす」を参照してください。
Important
ストレージ プールのバッキング ストレージとして Azure Elastic SAN を指定し、Azure Container Storage 所有者 ロールまたは Azure Container Storage 共同作成者 ロールが Azure サブスクリプションに割り当てられていない場合、Azure Container Storage のインストールは失敗し、ストレージ プールは作成されません。
Important
ストレージ プールのバッキング ストレージとして Azure Elastic SAN を指定し、Azure Container Storage 所有者 ロールまたは Azure Container Storage 共同作成者 ロールが Azure サブスクリプションに割り当てられていない場合、Azure Container Storage のインストールは失敗し、ストレージ プールは作成されません。 これらのロールを持たない 別のストレージ プールの種類として Azure Elastic SAN を有効 にしようとすると、以前のインストールプールと記憶域プールは影響を受けず、Elastic SAN 記憶域プールは作成されません。
使用可能な記憶域プールを表示する
使用可能な記憶域プールの一覧を取得するには、次のコマンドを実行します。
kubectl get sp -n acstor
記憶域プールの状態を確認するには、次のコマンドを実行します。
kubectl describe sp <storage-pool-name> -n acstor
MessageがStoragePool is readyと表示されない場合、記憶域プールはまだ作成中であるか、問題が発生している可能性があります。
Azure Container Storage のトラブルシューティングを参照してください。
次のステップ
選択したバッキング ストレージの種類のリンクを選択し、ボリュームを作成する手順に従います。