この記事では、Azure Arc CLI コマンドを使用して Azure Kubernetes Service (AKS) クラスターを作成し、そのクラスター上に Azure コンテナー ストレージをインストールする方法について説明します。
重要
この記事では、以前のバージョンの Azure コンテナー ストレージをインストールしたい場合など、特定のお客様のみが使用することになる手動インストール プロセスについて説明します。 最新の実稼働バージョンの Azure コンテナー ストレージをインストールするための推奨される方法は、こちらのクイックスタートで説明されているように AKS 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 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 サブスクリプションを選択し、[作成] を選択します。
サブスクリプションのコンテキストを設定する
az account set
コマンドを使用して Azure サブスクリプションのコンテキストを設定します。
az account list --output table
コマンドを実行すると、アクセス権を持つすべてのサブスクリプションのサブスクリプション ID を表示できます。
<subscription-id>
は、実際のサブスクリプション ID で置き換えてください。
az account set --subscription <subscription-id>
リソース プロバイダーを登録する
Microsoft.ContainerService
および Microsoft.KubernetesConfiguration
のリソース プロバイダーを、Azure サブスクリプションに登録する必要があります。 これらのプロバイダーを登録するには、次のコマンドを実行します。
az provider register --namespace Microsoft.ContainerService --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
これらのプロバイダーが正常に登録されたかどうかを確認するには、次のコマンドを実行します。
az provider list --query "[?namespace=='Microsoft.ContainerService'].registrationState"
az provider list --query "[?namespace=='Microsoft.KubernetesConfiguration'].registrationState"
リソース グループの作成
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 ノード上の使用可能なエフェメラル ストレージを検出し、ボリューム デプロイ用のドライブを取得します。
VM の種類
Azure Container Storage を使用するには、少なくとも 3 つの Linux VM のノード プールが必要です。 各 VM には、少なくとも 4 つの仮想 CPU (vCPU) が必要です。 Azure Container Storage は、拡張機能がデプロイされるすべての VM で I/O 処理に 1 つのコアを使用します。
Azure Container Storage で Azure Elastic SAN または Azure Disks を使用する場合は、クラスター ノードに対して standard_d4s_v5 などの汎用 VM の種類を選択する必要があります。
ローカル NVMe と一緒にエフェメラル ディスクを使用する場合は、standard_l8s_v3 などの、ストレージ最適化 VM の種類を選択します。 一時 SSD でエフェメラル ディスクを使う場合は、Ev3 および Esv3 シリーズの VM が必要です。
重要
Azure Premium Storage をサポートする VM の種類を選ぶ必要があります。
AKS クラスターの作成
次のコマンドを実行して、Linux ベースの AKS クラスターを作成し、システム割り当てマネージド ID を有効にします。 既にある AKS クラスターを使用する場合は、このステップをスキップできます。
<resource-group>
は作成したリソース グループの名前に、<cluster-name>
は作成するクラスターの名前に、<vm-type>
は前の手順で選択した VM の種類に置き換えます。 この例では、3 つのノードがあるクラスターを作成します。 より大きなクラスターが必要な場合は、--node-count
を大きくします。
ストレージ プールの種類としてローカル NVMe を使用したい場合は、必ずノード数を 4 以上に設定してください。
az aks create -g <resource-group> -n <cluster-name> --node-count 3 -s <vm-type> --generate-ssh-keys
デプロイが完了するまで数分かかります。
注意
AKS クラスターを作成すると、AKS リソースを保存するための 2 つ目のリソース グループが自動的に作成されます。 この 2 番目のリソース グループは、名前付け規則 MC_YourResourceGroup_YourAKSClusterName_Region
に従います。 詳細については、「AKS と一緒にリソース グループが 2 つ作成されるのはなぜでしょうか?」を参照してください。
クラスターに接続する
クラスターに接続するには、Kubernetes コマンド ライン クライアント kubectl
を使用します。 Azure Cloud Shell を使用している場合は既にインストールされています。または、az aks install-cli
コマンドを実行してローカルにインストールできます。
az aks get-credentials
コマンドを使用して、クラスターに接続するようにkubectl
を構成します。 次のコマンドで、以下を行います。- 資格情報をダウンロードし、それを使用するように Kubernetes CLI を構成します。
-
~/.kube/config
(Kubernetes 構成ファイルの既定の場所) を使用します。 --file 引数を使用して、Kubernetes 構成ファイルの別の場所を指定できます。
az aks get-credentials --resource-group <resource-group> --name <cluster-name>
kubectl get
コマンドを使用して、ご利用のクラスターへの接続を確認します。 このコマンドでは、クラスター ノードの一覧が返されます。kubectl get nodes
次の出力例は、クラスター内のノードを示しています。 すべてのノードの状態が [準備完了] と表示されていることを確認します。
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 用の正しい IO エンジンに関連付ける必要があります。
重要
Azure portal を使用して AKS クラスターを作成した場合: クラスター内にユーザー ノード プールとシステム/エージェント ノード プールを設置する可能性が大きいと考えられます。 Azure Container Storage をインストールする前に、このセクションの説明に従ってユーザー ノード プールのラベルを更新する必要があります。 ただし、クラスターがシステム ノード プールのみで構成されている場合は (Azure portal で作成したテスト/開発クラスターはこれに該当します)、まず新しいユーザー ノード プールを追加し、その後にラベルを付ける必要があります。 これは、Azure portal で AKS クラスターを作成する際に、エージェント/システム ノード プールに CriticalAddOnsOnly
テイントが付加され、システム ノード プールへの Azure Container Storage のインストールが抑止されるためです。 Azure CLI を使用して AKS クラスターを作成する場合には、このテイントは追加されません。
ノード プールのラベルを変更するには、次のコマンドを実行します。 ただし、<resource-group>
と <cluster-name>
は実際の値に置き換え、<nodepool-name>
はノード プールの名前に置き換えてください。
az aks nodepool update --resource-group <resource-group> --cluster-name <cluster-name> --name <nodepool-name> --labels acstor.azure.com/io-engine=acstor
ノード プールに正しいラベルが付けられていることを確認するには、Azure portal にサインインし、AKS クラスターに移動します。
[設定]>[ノード プール] に移動し、ノード プールを選択して、[テイントとラベル] に Labels: acstor.azure.com/io-engine:acstor
と表示されていることを確認します。
Azure Container Storage オペレーター ロールを AKS マネージド ID に割り当てる
この手順を実行する必要があるのは、Azure Elastic SAN をバッキング ストレージとして使用する場合のみです。 Elastic SAN を使用するには、Azure Container Storage がクラスターにストレージをプロビジョニングできるようにアクセス許可を付与する必要があります。 具体的には、Azure Container Storage オペレーター ロールを AKS マネージド ID に割り当てる必要があります。 これを行うには、Azure portal または Azure CLI を使用します。 これを行うには、Azure サブスクリプションの Azure Container Storage 所有者ロールまたは Azure Container Storage 共同作成者ロールのいずれかが必要です。 十分なアクセス許可がない場合は、管理者にこれらの手順を実行するよう依頼してください。
- Azure portal にサインインし、Kubernetes サービスを検索して選択します。
- AKS クラスターを見つけて選択します。 左側のナビゲーションから [設定]>[プロパティ] を選択します。
- [インフラストラクチャ リソース グループ] に、クラスターの作成時に AKS によって作成されたリソース グループへのリンクが表示されます。 それを選択します。
- 左ペインから [アクセス制御 (IAM)] を選択します。
- [追加] > [ロールの割り当ての追加] の順に選択します。
- [職務権限ロール] タブで、[Azure Container Storage オペレーター] を選ぶか検索し、[次へ] を選びます。 サブスクリプションに Azure Container Storage 所有者または Azure Container Storage 共同作成者のロールがない場合は、Azure Container Storage オペレーター ロールを追加できません。
- [アクセスの割り当て先] で [マネージド ID] を選択します。
- [メンバー] で、[+ メンバーの選択] をクリックします。 [マネージド ID の選択] メニューが表示されます。
- [マネージド ID] で、[ユーザー割り当てマネージド ID] を選択します。
-
[選択] で、クラスター名に
-agentpool
が追加されたマネージド ID を探して選択します。 - [選択]、それから [確認と割り当て] をクリックします。
Azure Container Storage のインストール
初回インストールでは、Azure Arc CLI コマンドを使用して新しい拡張機能をダウンロードします。
<cluster-name>
と <resource-group>
を独自の値に置き換えます。
<extension-name>
の値は何でもかまいません。これは、インストールする拡張機能の単なるラベルです。
インストール中に、k8s-extension
をインストールするように求められる場合があります。
Y を選択します。
az k8s-extension create --cluster-type managedClusters --cluster-name <cluster-name> --resource-group <resource-group> --name <extension-name> --extension-type microsoft.azurecontainerstorage --scope cluster --release-train stable --release-namespace acstor
インストールが完了するまでに 10 ~ 15 分かかります。 インストールが正しく完了したかどうかを確認するには、次のコマンドを実行し、provisioningState
に [成功] と表示されていることを確認します。
az k8s-extension list --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type managedClusters
これで、Azure Container Storage が正常にインストールされました。 Kubernetes ワークロードに使用できる新しいストレージ クラスが作成されました。
次のステップ
これで、ストレージ プールとボリュームを作成できます。 使用するバックエンド ストレージの種類に応じて、適切な記事の手順に従います。