Share via


チュートリアル: Azure Kubernetes Service で使うために Azure Container Storage プレビューをインストールする

Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 このチュートリアルでは、Azure Kubernetes Service (AKS) クラスターを作成し、クラスターに Azure Container Storage をインストールします。 また、このチュートリアルの手動での方法ではなく、クイックスタートを使用して Azure Container Storage をインストールする方法もあります。

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

  • リソース グループを作成する
  • データ ストレージ オプションと VM の種類を選ぶ
  • AKS クラスターを作成する
  • クラスターに接続する
  • ノード プールにラベルを付ける
  • 共同作成者ロールを AKS マネージド ID に割り当てる
  • Azure Container Storage 拡張機能のインストール

前提条件

  • 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 コマンドを実行してローカルにインストールできます。

Note

AKS クラスターが既にデプロイされている場合は、クラスターへの接続に進みます。

作業の開始

  • 自分の Azure サブスクリプション ID をメモしておきます。 Azure ディスクまたはエフェメラル ディスクをデータ ストレージとして使用する場合は、Kubernetes 共同作成者ロールを持つサブスクリプションを使用することをお勧めします。 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>eastuswestus2westus3、または 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 の種類を選択する必要があります。

エフェメラル ディスクを使用する場合は、standard_l8s_v3 などの、ストレージ最適化 VM の種類を選択します。

重要

Azure Premium Storage をサポートする VM の種類を選ぶ必要があります。

AKS クラスターの作成

次のコマンドを実行して、Linux ベースの AKS クラスターを作成し、システム割り当てマネージド ID を有効にします。 既にある AKS クラスターを使用する場合は、このステップをスキップできます。

<resource-group> は作成したリソース グループの名前に、<cluster-name> は作成するクラスターの名前に、<vm-type> は前の手順で選択した VM の種類に置き換えます。 この例では、3 つのノードがあるクラスターを作成します。 より大きなクラスターが必要な場合は、--node-count を大きくします。

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 コマンドを実行してローカルにインストールできます。

  1. az aks get-credentials コマンドを使用して、クラスターに接続するように kubectl を構成します。 次のコマンドで、以下を行います。

    • 資格情報をダウンロードし、それを使用するように Kubernetes CLI を構成します。
    • ~/.kube/config (Kubernetes 構成ファイルの既定の場所) を使用します。 --file 引数を使用して、Kubernetes 構成ファイルの別の場所を指定できます。
    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    
  2. kubectl get コマンドを使用して、ご利用のクラスターへの接続を確認します。 このコマンドでは、クラスター ノードの一覧が返されます。

    kubectl get nodes
    
  3. 次の出力例は、クラスター内のノードを示しています。 すべてのノードの状態が [準備完了] と表示されていることを確認します。

    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 と表示されていることを確認します。

共同作成者ロールを AKS マネージド ID に割り当てる

Azure Container Service は AKS とは別のサービスであるため、Azure Container Storage がクラスターのストレージをプロビジョニングできるようにアクセス許可を付与する必要があります。 具体的には、[共同作成者] の Azure RBAC 組み込みロールを AKS マネージド ID に割り当てる必要があります。 これを行うには、Azure portal または Azure CLI を使用します。 これを行うには、Azure サブスクリプションの [所有者] ロールが必要です。 十分なアクセス許可がない場合は、管理者にこれらの手順を実行するよう依頼してください。

  1. Azure portal にサインインし、Kubernetes サービスを検索して選択します。

  2. AKS クラスターを見つけて選択します。 左側のナビゲーションから [設定]>[プロパティ] を選択します。

  3. [インフラストラクチャ リソース グループ] に、クラスターの作成時に AKS によって作成されたリソース グループへのリンクが表示されます。 それを選択します。

  4. 左ペインから [アクセス制御 (IAM)] を選択します。

  5. [追加] > [ロールの割り当ての追加] の順に選択します。

  6. [割り当ての種類] で、[特権管理者ロール] を選び、それから [共同作成者]、それから [次へ] を選びます。 サブスクリプションに [所有者] ロールがない場合は、[共同作成者] ロールを追加できません。

    Azure portal を使用して AKS マネージド ID に共同作成者ロールを追加する方法を示すスクリーンショット。

  7. [アクセスの割り当て先][マネージド ID] を選択します。

  8. [メンバー] で、[+ メンバーの選択] をクリックします。 [マネージド ID の選択] メニューが表示されます。

  9. [マネージド ID] で、[ユーザー割り当てマネージド ID] を選択します。

  10. [選択] で、クラスター名に -agentpool が追加されたマネージド ID を探して選択します。

  11. [選択]、それから [確認と割り当て] をクリックします。

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 ワークロードに使用できる新しいストレージ クラスが作成されました。

次のステップ

ストレージ プールと永続ボリューム要求を作成し、ポッドをデプロイして永続ボリュームをアタッチできるようになりました。 操作方法に関する適切な記事の手順に従います。