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 が必要です。 「Azure CLIをインストールする方法」を参照してください。 Azure Cloud Shell で Bash 環境を使用している場合は、最新バージョンが既にインストールされています。 Azure Cloud Shell ではなくローカルでコマンドを実行する予定の場合は、必ず管理者特権でコマンドを実行してください。 詳細については、「Azure Cloud Shell の概要」を参照してください。
Kubernetes コマンド ライン クライアント (
kubectl) が必要です。 Azure Cloud Shell を使用している場合は既にインストールされています。または、az aks install-cliコマンドを実行してローカルにインストールできます。ターゲット リージョンが Azure Container Storage リージョンでサポートされているかどうかを確認します。
作業の開始
Azure サブスクリプション ID を書き留めます。 Azure Elastic SAN をデータ ストレージとして使用する場合は、 Azure Container Storage 所有者 ロールまたは Azure Container Storage 共同作成者 ロールが Azure サブスクリプションに割り当てられている必要があります。 所有者レベルのアクセスを使用すると、Azure Container Storage 拡張機能をインストールし、そのストレージ リソースへのアクセスを許可し、Azure Elastic SAN リソースを構成するアクセス許可を付与できます。 共同作成者レベルのアクセスを使用すると、拡張機能をインストールし、そのストレージ リソースへのアクセスを許可できます。 Azure Disks またはエフェメラル ディスクをデータ ストレージとして使用する予定がある場合は、サブスクリプションに対する特別なアクセス許可は必要ありません。
Azure Cloud Shell を起動するか、ローカル インストールを使用している場合は、 az login コマンドを使用して Azure CLI にサインインします。
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-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 のコントロール プレーン コンポーネントは、ラベル付けされたノードに限定されるものではなく、システム ノード プールにもインストールできます。
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 サブスクリプションに Azure Container Storage 所有者 ロールまたは Azure Container Storage 共同作成者 ロールが割り当てられない場合、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 のトラブルシューティングを参照してください。
次のステップ
選択したバッキング ストレージの種類のリンクを選択し、ボリュームを作成する手順に従います。