Azure Container Storage は、コンテナー用に構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 このチュートリアルでは、新しいクラスターを作成するか、既存のクラスターでサービスを有効にするかに関係なく、 Azure Kubernetes Service (AKS) クラスターに最新の実稼働バージョンの Azure Container Storage をインストールします。
この記事では、サポートされた2つのフロー(インストーラーのみまたはインストーラー+能力)を使ってAzureコンテナストレージをインストールする方法、コンポーネントインストールのトリガー方法、そしてデプロイメントの検証とトラブルシューティング方法について説明します。 永続ボリュームストレージタイプには、コンテナストレージインターフェース(CSI)を実装するドライバーが含まれています。 Azure Container Storageは、分散アクセラレータ(DACS)も有効化・管理できます。DACSは別の拡張機能をインストールし、StorageClassを作成しません。
Azure Container Storage のオープン ソース バージョンを使用する場合は、別のインストール手順については 、local-csi-driver リポジトリを参照してください。
このチュートリアルの終わりまでに、次のことができます。
- Azure CLI 環境を準備する
- クラスターのリソース グループを作成または選択する
- ノード プールの仮想マシンの種類がインストール条件を満たしていることを確認する
- 新しい AKS クラスターを作成するか、既存のクラスターで有効にして Azure Container Storage をインストールする
重要
この記事は Azure コンテナー ストレージ(バージョン 2.x.x) に該当します。 以前のバージョンについては、「Azure コンテナー ストレージ(バージョン 1.x.x)」のドキュメントを参照してください。 AKS クラスターに 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 が既に使用されていることを確認します。
サブスクリプションで初めて Elastic SAN を使用する場合は、次の 1 回限りの登録コマンドを実行します。
az provider register --namespace Microsoft.ElasticSan
サブスクリプションのコンテキストを設定する
az account set コマンドを使用して Azure サブスクリプション コンテキストを設定します。
az account list --output tableを実行すると、サブスクリプション ID を表示できます。
<subscription-id> は、サブスクリプション ID で置き換えてください。
az account set --subscription <subscription-id>
リソース グループを作成する
Azure リソース グループは、リソースの論理コンテナーです。 リソース グループを作成するときは、場所を指定します。 この場所には、リソース グループメタデータが格納され、明示的なリージョンなしで作成するリソースの既定のリージョンとして機能します。
リソース グループは、az group create を使用して作成します。
<resource-group-name>をリソース グループ名に置き換え、<location>を、eastus、westus2、westus3、westeuropeなどの Azure リージョンに置き換えます。 既存の AKS クラスターで Azure Container Storage を有効にする場合は、クラスターを既にホストしているリソース グループを使用します。
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
}
新しい AKS クラスターに Azure Container Storage をインストールする
環境に一致するシナリオを選択します。
重要
Azure Container Storage では、既定で最新のメジャー バージョンがインストールされます。 メジャーバージョンを--container-storage-versionで固定することができます。 マイナー バージョンまたはパッチ バージョンをピン留めすることはできません。
インストーラーのみのインストール
次のコマンドを実行して、新しい AKS クラスターを作成し、Azure Container Storage をインストールします。
<cluster-name> と <resource-group> を独自の値に置き換え、使用する VM の種類を指定します。
az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage --generate-ssh-keys
デプロイには最大 5 分かかる場合があります。 CSI ドライバーのインストールは、ストレージ クラスを作成するか、後でストレージの種類を有効にするまで延期されます。
ローカル NVMe ストレージ クラスまたは Elastic SAN ストレージ クラスを作成する手順に従います。
インストーラーとストレージタイプのインストール
次のコマンドを実行して、新しい AKS クラスターを作成し、Azure Container Storage をインストールします。
<cluster-name> と <resource-group> を独自の値に置き換え、使用する VM の種類を指定します。
az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage ephemeralDisk --generate-ssh-keys
このコマンドは、インストーラーをインストールし、ローカル NVMe CSI ドライバーをデプロイし、 local-csiという名前の既定のストレージ クラスを作成します。
ephemeralDisk elasticSanなどの一覧を提供することで、ローカル NVMe と Elastic SAN の両方をインストールして使用できます。
既存の AKS クラスターに Azure Container Storage をインストールする
インストーラーのみのインストール
次のコマンドを実行して、既存の AKS クラスターで Azure Container Storage を有効にします。
<cluster-name> と <resource-group> を独自の値に置き換えます。
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage
デプロイには最大 5 分かかる場合があります。 完了すると、クラスターに Azure Container Storage インストーラー コンポーネントがインストールされます。 CSI ドライバーのインストールは、ストレージ クラスを作成するか、後でストレージの種類を有効にするまで延期されます。 ローカル NVMe ストレージ クラスまたは Elastic SAN ストレージ クラスを作成する手順に従います。
インストーラーとストレージタイプのインストール
次のコマンドを実行して、既存の AKS クラスターで Azure Container Storage を有効にします。
<cluster-name>と<resource-group>を独自の値に置き換え、使用するストレージの種類を指定します。
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage elasticSan
このコマンドは、インストーラーをインストールし、Elastic SAN CSI ドライバーをデプロイし、 azuresan-csiという名前の既定のストレージ クラスを作成します。
ephemeralDisk elasticSanなどの一覧を提供することで、ローカル NVMe と Elastic SAN の両方をインストールして使用できます。
クラウドストレージ用の分散アクセラレータをインストールする(プレビュー)
既存のAKSクラスターでクラウド ストレージ用の分散アクセラレータを有効にするには、distributedAccelerator 値を使用して。 大文字の A が必要です。 拡張機能はAKSマネージドクラスタリソースにインストールされます。クラスタをArc 接続する必要はありません。
aks-previewバージョン22.0.0b9以降のバージョンを使ってください。 拡張機能のインストールまたはアップグレード、バージョンの確認、そしてDACS拡張の管理と検査のための connectedk8s と k8s-extension のインストールまたはアップグレードを行います:
az extension add --name aks-preview --upgrade --yes
az extension show --name aks-preview --query version --output tsv
az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
DACSを有効にする前に、キャッシュ専用のローカルNVMeデータディスクを持つLinuxノードプールを選択してください。 ノードプール構成を通じて既存のカスタムラベルを保持し、 dacs.azure.com/processing-unit=cpu ラベルを適用します。
キャッシュノードプールを確認してください。
Caution
DACSを有効にすると、ラベル付きキャッシュノード上でローカルのNVMeディスクを検出、フォーマット、マウントする前提条件のDaemonSetがインストールされます。 他のストレージコンポーネントにクレームされていないディスクを持つノードのみにラベルを付けてください。
以下のコマンドを実行し、<cluster-name> と <resource-group> を自分の値に置き換えてください:
az aks update \
--name <cluster-name> \
--resource-group <resource-group> \
--enable-azure-container-storage distributedAccelerator
このコマンドは distributedaccelerator 拡張、DACSコントローラ、NVMeの前提条件DaemonSetを kube-systemにインストールし、 caches.storage.azure.com カスタムリソース定義(CRD)をインストールします。 別途前提条件チャートをインストールしたり、拡張機能のHelmリリースを自分で管理したりする必要はありません。 デフォルトではStorageClassを作成したり、キャッシュリソースやキャッシュサーバーポッドをプロビジョニングしたりしません。 拡張機能のインストールが成功したからといって、キャッシュがアプリケーショントラフィックに対応しているわけではありません。
先に示した永続ボリュームストレージオプションと組み合わせず、このコマンドでは distributedAccelerator のみを指定してください。 キャッシュサーバーをプロビジョニングする前に、すべてのラベル付きキャッシュノードで管理対象の前提条件が整っていることを確認してください。 キャッシュの設定とアプリケーションワークフローについては、「 AKSのクラウドストレージ用分散アクセラレータで始める」をご覧ください。
DACSを削除するには 、「クラウドストレージ用の分散アクセラレータを削除」に従ってください。 コントローラが動作している間にキャッシュリソースを削除し、その後DACSを無効にします。 無効化するとコントローラーと管理された前提条件DaemonSetを削除します。それらの前提条件を別々に削除しないでください。
- Terraform を準備し、Azure に対して認証する
- リソース グループと AKS クラスター構成を定義する
- ノード プールの仮想マシンの種類がインストール条件を満たしていることを確認する
- Terraform を適用して Azure Container Storage をデプロイするか、既存のクラスターで有効にする
重要
この記事は Azure コンテナー ストレージ(バージョン 2.x.x) に該当します。 以前のバージョンについては、「Azure コンテナー ストレージ(バージョン 1.x.x)」のドキュメントを参照してください。 AKS クラスターに 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 データ ディスクをサポートする仮想マシン (VM) SKU を選択します。
- 既存のクラスターの場合は、Azure Container Storage を有効にする前に、ノード プールでサポートされている VM SKU が既に使用されていることを確認します。
Terraform バージョン 1.5 以降をインストールし、
terraform versionでインストールを確認します。 Terraform では、Azure CLI 認証を再利用できます。サブスクリプションで初めて Elastic SAN を使用する場合は、次の 1 回限りの登録コマンドを実行します。
az provider register --namespace Microsoft.ElasticSan
サブスクリプションのコンテキストを設定する
Terraform では、複数の方法でターゲット Azure サブスクリプションを決定できます。
- プロバイダー ブロック内の
subscription_id -
ARM_SUBSCRIPTION_ID環境変数 - Azure CLI の既定のサブスクリプション
- マネージド ID (Azure で実行されている場合)
ローカルで使用する場合は、Azure CLI コンテキストを設定します。
az account set --subscription <subscription-id>
サブスクリプションで初めて Terraform を使用してデプロイする場合は、次の 1 回限りの登録コマンドを実行します。
az provider register --namespace Microsoft.KubernetesConfiguration
# Wait for registration to complete (can take a few minutes)
az provider show --namespace Microsoft.KubernetesConfiguration --query "registrationState" -o tsv
新しい AKS クラスターに Azure Container Storage をインストールする
重要
Azure Container Storage は、利用可能な最新バージョンをインストールし、それ自体を自動的に更新します。 手動バージョンの選択はサポートされていません。
空の作業ディレクトリで、AKS クラスターの次の最小構成で
main.tfファイルを作成します。 要件を満たすように、リソース名、場所、VM サイズを更新します。terraform { required_version = ">= 1.5.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } resource "azurerm_resource_group" "rg" { name = "demo-aks-rg" location = "eastus" } resource "azurerm_kubernetes_cluster" "aks" { name = "demo-aks-cluster" dns_prefix = "demo-aks" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name default_node_pool { name = "systempool" vm_size = "Standard_L8s_v3" node_count = 3 } identity { type = "SystemAssigned" } } resource "azurerm_kubernetes_cluster_extension" "container_storage" { # NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility name = "acstor" cluster_id = azurerm_kubernetes_cluster.aks.id extension_type = "microsoft.azurecontainerstoragev2" }作業ディレクトリを初期化して、AzureRM プロバイダーをダウンロードします。
terraform init計画された変更を確認します。
terraform plan構成を適用して、リソース グループ、AKS クラスター、Azure Container Storage 拡張機能を作成します。 通常、デプロイには 5 分かかります。
terraform apply
完了すると、クラスターに Azure Container Storage インストーラー コンポーネントがインストールされます。 CSI ドライバーのインストールは、ストレージ クラスを作成するまで延期されます。 ローカル NVMe ストレージ クラスまたは Elastic SAN ストレージ クラスを作成する手順に従います。
既存の AKS クラスターに Azure Container Storage をインストールする
AKS クラスターが既に存在し、Terraform の外部で管理している場合でも、拡張機能リソースのみを作成することで Azure Container Storage を有効にすることができます。 データ ソースを使用してクラスター ID を検索します。
terraform {
required_version = ">= 1.5.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 4.0"
}
}
}
provider "azurerm" {
features {}
}
data "azurerm_kubernetes_cluster" "existing" {
name = "existing-aks"
resource_group_name = "existing-aks-rg"
}
resource "azurerm_kubernetes_cluster_extension" "container_storage" {
# NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility
name = "acstor"
cluster_id = data.azurerm_kubernetes_cluster.existing.id
extension_type = "microsoft.azurecontainerstoragev2"
}
terraform init (これが新しい作業ディレクトリの場合) を実行し、その後にterraform applyを実行して、ターゲット クラスターに Azure Container Storage をインストールします。 通常、デプロイには 5 分かかります。
完了すると、クラスターに Azure Container Storage インストーラー コンポーネントがインストールされます。 CSI ドライバーのインストールは、ストレージ クラスを作成するまで延期されます。 ローカル NVMe ストレージ クラスまたは Elastic SAN ストレージ クラスを作成する手順に従います。
インストールを検証する
AKS クラスターに接続する
検証コマンドを実行する前に、ローカル kubeconfig がターゲット クラスターに設定されていることを確認します。
az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>
複数のクラスターを管理する場合は、既存のコンテキストを置き換える --overwrite-existing を追加するか、 --context を使用して一意のコンテキスト名を設定します。
インストーラーを確認する (インストーラー専用モード)
インストーラーのみの有効化後、インストーラーが存在することを確認します。
kubectl get deploy -n kube-system | grep acstor
予想される出力:
acstor-cluster-manager 2/2 2 2 4d9h
acstor-geneva 2/2 2 2 4d9h
クラウドストレージ用の分散アクセラレータを検証
DACSのインストールでは、StorageClassを探すのではなく拡張機能を確認してください。
az k8s-extension show \
--cluster-type managedClusters \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--name distributedaccelerator \
--query '{extensionType:extensionType,provisioningState:provisioningState,currentVersion:currentVersion,releaseTrain:releaseTrain}' \
--output table
拡張機能タイプが microsoft.distributedaccelerator で、プロビジョニング状態が Succeededであることを確認しましょう。
currentVersionフィールドにはインストール済みのバージョンが表示されます。 拡張リソース名は小文字の distributedacceleratorで、CLIのストレージオプション distributedAcceleratorとは違います。
クラスタに接続後、コントローラー、前提条件DaemonSet、CRDを確認してください:
kubectl rollout status deployment/dacs-manager --namespace kube-system --timeout=5m
kubectl get deployment dacs-manager --namespace kube-system
kubectl rollout status daemonset/dacs-prereq --namespace kube-system --timeout=10m
kubectl get daemonset dacs-prereq --namespace kube-system
kubectl get pods --namespace kube-system --selector app.kubernetes.io/name=dacs-prereq --output wide
kubectl get crd caches.storage.azure.com
拡張がSucceededの状態になり、コントローラにレディレプリカがあり、前提条件のDaemonSetが各ラベル付きキャッシュノードに Ready ポッドを持つ場合にのみ続行します。 希望するレプリカがゼロのデーモンセットはNVMeの準備を検証しません。 チェックが失敗した場合は、 クラウドストレージの分散アクセラレータのトラブルシューティングを参照してください。
その後のストレージクラスおよびCSIドライバ検証の手順は、永続ボリュームストレージタイプに適用され、DACSには適用されません。
ストレージ クラスの存在を確認する
ストレージ クラスを作成するか、ストレージの種類を有効にした後、ストレージ クラスを確認します。
kubectl get sc
出力例:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azuresan-csi san.csi.azure.com Delete Immediate false 4d7h
local-csi localdisk.csi.acstor.io Delete WaitForFirstConsumer true 4d5h
ドライバーのインストールの確認
ストレージ クラスの作成またはストレージの種類のインストール後に必要なコンポーネントを確認します。
kubectl get pod -n kube-system | grep acstor
出力例:
pod/acstor-azuresan-csi-driver-jrqd2 7/7 Running 0 142m
pod/acstor-azuresan-csi-driver-tcdp8 7/7 Running 0 142m
pod/acstor-cluster-manager-76c67496f9-8ln5d 2/2 Running 0 3h54m
pod/acstor-cluster-manager-76c67496f9-b4c8q 2/2 Running 0 3h54m
pod/acstor-geneva-588bcbcc67-4tr5d 3/3 Running 0 3h54m
pod/acstor-geneva-588bcbcc67-k7j7k 3/3 Running 0 3h54m
pod/acstor-node-agent-46v47 1/1 Running 0 142m
pod/acstor-node-agent-6c99m 1/1 Running 0 142m
pod/acstor-otel-collector-4lfgz 1/1 Running 0 142m
pod/acstor-otel-collector-hw9nd 1/1 Running 0 142m
デバッグ
デバッグの場合は、コンポーネントがロールアウトされるシステムを監視します。
kubectl get events -n kube-system --watch
kubectl get pod -n kube-system --watch
インストーラーによって使用される HelmRelease および OCIRepository カスタム リソースを調べます。
kubectl describe helmreleases.helm.installer.acstor.io -n kube-system
kubectl describe ocirepositories.source.installer.acstor.io -n kube-system