クイックスタート: Azure Kubernetes Service で Azure コンテナー ストレージを使用する
Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 このクイック スタートでは、Azure CLI を使って、Linux ベースの Azure Kubernetes Service (AKS) クラスターに接続し、Azure Container Storage をインストールして、ストレージ プールを作成する方法を示します。
重要
Azure コンテナー ストレージは、バージョン 1.1.0 以降で一般提供 (GA) されるようになりました。 運用環境のワークロードには、一般提供バージョンが推奨されます。
前提条件
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 リージョンでサポート対象になっているかどうかを確認します。
AKS クラスターをまだ作成していない場合は、AKS クラスターのインストールの手順に従ってください。
作業の開始
自分の 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 にサインインします。
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>
クラスターに接続する
クラスターに接続するには、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 をデプロイする前に、ストレージ プールとボリュームの作成に使用するバックエンド ストレージ オプションを決定する必要があります。 現在、次の 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 Container Storage 所有者ロールまたは Azure Container Storage 共同作成者ロールのいずれかが必要です。
リソース消費
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 のノード プールが必要です。 ストレージ プールにローカル NVMe を使用している場合、ノード プールには少なくとも 4 つの 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 クラスター上で実行されている Azure コンテナー ストレージのプレビュー インスタンスが既にあるか、初めてクラスター上に Azure コンテナー ストレージをインストールしているかによって異なります。
プレビュー インストールを GA にアップグレードする
クラスター上で実行されている Azure コンテナー ストレージのプレビュー インスタンスが既にある場合は、次のコマンドを実行して、最新の一般公開 (GA) バージョンに更新することをお勧めします。 クラスター上に初めて Azure コンテナー ストレージをインストールしている場合は、代わりに「Azure コンテナー ストレージをインストールしてストレージ プールを作成する」に進んでください。 特定のノード プールに Azure Container Storage をインストールすることもできます。
az k8s-extension update --cluster-type managedClusters --cluster-name <cluster-name> --resource-group <resource-group> --name azurecontainerstorage --version 1.1.0 --auto-upgrade false --release-train stable
忘れずに、<cluster-name>
と<resource-group>
を独自の値に置き換えてください。
Azure コンテナー ストレージをインストールしてストレージ プールを作成する
インストールする前に、AKS クラスターが VM の要件を満たすことを確認します。
クラスター上に Azure コンテナー ストレージをインストールしてストレージ プールを作成するには、次のコマンドを実行します。 <cluster-name>
と <resource-group>
を独自の値に置き換えます。 <storage-pool-type>
を、azureDisk
、ephemeralDisk
、または elasticSan
に置き換えます。 ephemeralDisk
を選択した場合は、--storage-pool-option
を指定することもでき、値は NVMe
または Temp
にすることができます。
このコマンドを実行すると、既定で nodepool1
という名前のシステム ノード プールで、Azure Container Storage が有効になります。 他のノード プールで有効にする場合は、「特定のノード プールに Azure Container Storage をインストールする」を参照してください。 追加のパラメーターを指定する場合は、 Azure コンテナー ストレージのストレージ プール パラメーターを参照してください。
*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 がインストールされた AKS クラスター、選択したストレージ プールの種類が有効になったコンポーネント、既定のストレージ プールがあります。 追加のストレージ プールの種類を有効にして追加のストレージ プールを作成する場合は、「追加のストレージ プールの種類を有効にする」を参照してください。
重要
ストレージ プールのバッキング ストレージとして Azure Elastic SAN を指定し、Azure サブスクリプションに Azure Container Storage 所有者ロールまたは Azure Container Storage 共同作成者ロールが割り当てられていない場合、Azure Container Storage のインストールが失敗し、ストレージ プールは作成されません。 これらのロールを使用せずに Azure Elastic SAN を追加の記憶域プールの種類として有効にしようとすると、以前のインストールプールと記憶域プールは影響を受けず、Elastic SAN ストレージ プールは作成されません。
特定のノード プールに Azure Container Storage をインストールする
特定のノード プールに Azure Container Storage をインストールする場合は、これらの手順に従います。 ノード プールには、それぞれ少なくとも 3 つの Linux VM が含まれている必要があります。 ストレージ プールにローカル NVMe を使用している場合、ノード プールにはそれぞれ、少なくとも 4 つの Linux VM が含まれている必要があります。
次のコマンドを実行して、使用可能なノード プールのリストを表示します。
<resource-group>
と<cluster-name>
を独自の値に置き換えます。az aks nodepool list --resource-group <resource-group> --cluster-name <cluster-name>
次のコマンドを実行して、特定のノード プールに Azure Container Storage をインストールします。
<cluster-name>
と<resource-group>
を独自の値に置き換えます。<storage-pool-type>
を、azureDisk
、ephemeralDisk
、または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>
には、azureDisk
、ephemeralDisk
、または 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>
を使用してノード プールを指定できます。
使用可能なストレージ プールを表示する
使用可能なストレージ プールのリストを取得するには、次のコマンドを実行します。
kubectl get sp -n acstor
ストレージ プールの状態を確認するには、次のコマンドを実行します。
kubectl describe sp <storage-pool-name> -n acstor
Message
に StoragePool is ready
と表示されない場合は、ストレージ プールはまだ作成中であるか、問題が発生しました。 「Azure Container Storage のトラブルシューティング」を参照してください。
ストレージ プールの種類を無効にする
特定のストレージ プールの種類を使用しなくなったときに、ノード プール内のリソースを解放するためにその種類を無効にする場合は、次のコマンドを実行します。 <cluster-name>
と <resource-group>
を独自の値に置き換えます。 <storage-pool-type>
には、azureDisk
、ephemeralDisk
、または elasticSan
を指定します。
az aks update -n <cluster-name> -g <resource-group> --disable-azure-container-storage <storage-pool-type>
Note
無効にしようとしている種類の既存のストレージ プールがある場合、そのストレージ プールの種類は無効になりません。
次のステップ
ボリュームを作成するには、選択したバッキング ストレージの種類のリンクを選びます。