チュートリアル: Azure Kubernetes Service で使うために Azure Container Storage をインストールする
Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 このチュートリアルでは、Azure Kubernetes Service (AKS) クラスターを作成し、そのクラスターに最新製品版の Azure Container Storage をインストールします。 既に AKS クラスターをデプロイしている場合は、このチュートリアルの手動の手順に従うのではなく、このクイックスタートを使用して Azure Container Storage をインストールすることをお勧めします。
重要
Azure コンテナー ストレージは、バージョン 1.1.0 以降で一般提供 (GA) されるようになりました。 運用ワークロードには、一般提供バージョンをお勧めします。
- リソース グループを作成する
- データ ストレージ オプションと VM の種類を選ぶ
- AKS クラスターを作成する
- クラスターに接続する
- ノード プールにラベルを付ける
- Azure Container Storage オペレーター ロールを AKS マネージド ID に割り当てる
- Azure Container Storage のインストール
前提条件
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 Container Storage リージョンでサポート対象になっているかどうかを確認します。
作業の開始
自分の 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 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 | なし | なし |
Azure ディスク | 1 | 1 GiB |
エフェメラル ディスク - 一時 SSD | 1 | 1 GiB |
エフェメラル ディスク - ローカル NVMe (標準レベル) | コアの 25% (パフォーマンス レベルを更新できます)* | 1 GiB |
使用されるリソース数はノードあたりであり、Azure Container Storage がインストールされるノード プール内のノードごとに使用されます。 ノードに十分なリソースがない場合、Azure Container Storage は実行に失敗します。 Kubernetes は、これらの失敗したポッドの初期化を自動的に再試行するため、リソースが解放されると、これらのポッドを再初期化できます。
*ストレージ プールの種類がエフェメラル ディスク - ローカル 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 ディスクを使用する場合は、standard_d4s_v5 などの汎用 VM の種類を選択します。
- ローカル NVMe と一緒にエフェメラル ディスクを使用する場合は、standard_l8s_v3 などの、ストレージ最適化 VM の種類を選択します。
- 一時 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 は既定でそこにインストールされます。 それ以外の場合は、システム ノード プールにインストールされます。
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 所有者ロールまたは 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 のトラブルシューティング」を参照してください。
次のステップ
選択したバッキング ストレージの種類のリンクを選択し、ボリュームを作成する手順に従います。