Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 このチュートリアルでは、新しいクラスターを作成するか、既存のデプロイでサービスを有効にしているかに関係なく、 Azure Kubernetes Service (AKS) クラスターに最新の実稼働バージョンの Azure Container Storage をインストールします。
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 Container Storage リージョンの可用性を確認して、ターゲット リージョンがサポートされていることを確認します。
ノード プールの構成を計画します。
- OS の種類として Linux を使用します (Windows はサポートされていません)。
- ストレージ最適化 VM や GPU アクセラレータ VM など、ローカル NVMe データ ディスクをサポートする VM SKU を選択します。
- 既存のクラスターの場合は、Azure Container Storage を有効にする前に、ノード プールでサポートされている VM SKU が既に使用されていることを確認します。
最新バージョンの Azure CLI (2.77.0 以降) をインストールし、
az loginでサインインします。 (az upgradeは使用できないため) Azure Cloud Shell の使用を避け、問題が発生した場合はaks-previewなどの競合する拡張機能を無効にします。Kubernetes コマンド ライン クライアント (
kubectl) をインストールします。az aks install-cliを実行してローカルにインストールできます。
必要な拡張機能をインストールする
次のコマンドを実行して、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 リージョンに置き換えます。 既存の 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 は、利用可能な最新バージョンをインストールし、それ自体を自動的に更新します。 手動バージョンの選択はサポートされていません。
オプション 1: Azure Container Storage を有効にして新しい AKS クラスターを作成する
次のコマンドを実行して、新しい 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 ~ 10 分かかります。 完了すると、Azure Container Storage がインストールされた AKS クラスターと、ローカル NVMe ストレージの種類のコンポーネントがデプロイされます。
オプション 2: 既存の 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 ~ 10 分かかります。 完了すると、対象の AKS クラスターに Azure Container Storage がインストールされ、ローカル NVMe ストレージの種類のコンポーネントがデプロイされます。
- Terraform を準備し、Azure に対して認証する
- リソース グループと AKS クラスター構成を定義する
- ノード プールの仮想マシンの種類がインストール条件を満たしていることを確認する
- Terraform を適用して Azure Container Storage をデプロイするか、既存のクラスターで有効にする
重要
この記事は Azure コンテナー ストレージ(バージョン 2.x.x) に該当します。 以前のバージョンについては、「Azure コンテナー ストレージ(バージョン 1.x.x)」のドキュメントを参照してください。 AKS クラスターに Azure Container Storage (バージョン 1.x.x) が既にインストールされている場合は、 次の手順に従って削除します。
前提条件
無料アカウントにサインアップして Azure サブスクリプションをまだお持ちでない場合は、作成します。
Azure Container Storage リージョンの可用性を確認して、ターゲット リージョンがサポートされていることを確認します。
ノード プールの構成を計画します。
- OS の種類として Linux を使用します (Windows はサポートされていません)。
- ストレージ最適化 VM や GPU アクセラレータ VM など、ローカル NVMe データ ディスクをサポートする VM SKU を選択します。
- 既存のクラスターの場合は、Azure Container Storage を有効にする前に、ノード プールでサポートされている VM SKU が既に使用されていることを確認します。
Azure CLI バージョン 2.77.0 以降をインストールし、
az loginでサインインします。Terraform バージョン 1.5 以降をインストールし、
terraform versionでインストールを確認します。 Terraform では、Azure CLI 認証を再利用できます。デプロイ後にクラスターを検証できるように、
kubectlをインストールします。 必要に応じて、az aks install-cliを実行してローカルにインストールします。
サブスクリプションのコンテキストを設定する
Terraform では、さまざまな方法でターゲット Azure サブスクリプションを決定できます。
- プロバイダー ブロック内の
subscription_id -
ARM_SUBSCRIPTION_ID環境変数 - Azure CLI の既定のサブスクリプション
- マネージド ID (Azure で実行されている場合)
ローカルで使用する場合は、Azure CLI コンテキストを設定します。
az account set --subscription <subscription-id>
AKS クラスターに Azure Container Storage をインストールする
環境に一致するシナリオを選択します。
重要
Azure Container Storage は、利用可能な最新バージョンをインストールし、それ自体を自動的に更新します。 手動バージョンの選択はサポートされていません。
オプション 1: Azure Container Storage を有効にして新しい AKS クラスターを作成する
空の作業ディレクトリで、AKS クラスターの次の最小構成で
main.tfファイルを作成します。 要件を満たすように、リソース名、場所、VM サイズを更新します。terraform { required_version = ">= 1.5.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.x" } } } 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" { name = "microsoft-azurecontainerstorage" cluster_id = azurerm_kubernetes_cluster.aks.id extension_type = "microsoft.azurecontainerstoragev2" configuration_settings = { enable-azure-container-storage = "true" } }作業ディレクトリを初期化して、AzureRM プロバイダーをダウンロードします。
terraform init計画された変更を確認します。
terraform plan構成を適用して、リソース グループ、AKS クラスター、Azure Container Storage 拡張機能を作成します。 通常、デプロイには 5 ~ 10 分かかります。
terraform apply
オプション 2: 既存の AKS クラスターで Azure Container Storage を有効にする
AKS クラスターが既に存在し、Terraform の外部で管理している場合でも、拡張機能リソースのみを作成することで Azure Container Storage を有効にすることができます。 データ ソースを使用してクラスター ID を検索します。
terraform {
required_version = ">= 1.5.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 4.x"
}
}
}
provider "azurerm" {
features {}
}
data "azurerm_kubernetes_cluster" "existing" {
name = "existing-aks"
resource_group_name = "existing-aks-rg"
}
resource "azurerm_kubernetes_cluster_extension" "container_storage" {
name = "microsoft-azurecontainerstorage"
cluster_id = data.azurerm_kubernetes_cluster.existing.id
extension_type = "microsoft.azurecontainerstoragev2"
configuration_settings = {
enable-azure-container-storage = "true"
}
}
terraform init (これが新しい作業ディレクトリの場合) を実行し、その後にterraform applyを実行して、ターゲット クラスターに Azure Container Storage をインストールします。
クラスターに接続して状態を確認する
インストール後、クラスターに接続するように kubectl を構成し、ノードの準備ができているかどうかを確認します。
クラスターの資格情報をダウンロードし、それらを使用するように Kubernetes CLI を構成します。 既定では、資格情報は
~/.kube/configに格納されます。 必要に応じて、--file引数を使用して別のパスを指定します。az aks get-credentials --resource-group <resource-group> --name <cluster-name>クラスター ノードを一覧表示して、接続を確認します。
kubectl get nodes次の出力のように、すべてのノードで
Readyの状態が報告されていることを確認します。NAME STATUS ROLES AGE VERSION aks-nodepool1-34832848-vmss000000 Ready agent 80m v1.32.6 aks-nodepool1-34832848-vmss000001 Ready agent 80m v1.32.6 aks-nodepool1-34832848-vmss000002 Ready agent 80m v1.32.6