次の方法で共有


チュートリアル: Azure Kubernetes Service で使用するために Azure コンテナー ストレージをインストールする

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> を、eastuswestus2westus3 または 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 クラスターを作成する

  1. 空の作業ディレクトリで、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"
      }
    }
    
  2. 作業ディレクトリを初期化して、AzureRM プロバイダーをダウンロードします。

    terraform init
    
  3. 計画された変更を確認します。

    terraform plan
    
  4. 構成を適用して、リソース グループ、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 を構成し、ノードの準備ができているかどうかを確認します。

  1. クラスターの資格情報をダウンロードし、それらを使用するように Kubernetes CLI を構成します。 既定では、資格情報は ~/.kube/configに格納されます。 必要に応じて、 --file 引数を使用して別のパスを指定します。

    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    
  2. クラスター ノードを一覧表示して、接続を確認します。

    kubectl get nodes
    
  3. 次の出力のように、すべてのノードで 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
    

次のステップ