チュートリアル - AKS クラスターに Azure Container Storage をデプロイする

このチュートリアルでは、Azure Container Storage について説明し、Azure Kubernetes Service (AKS) で実行されているアプリケーションのコンテナー ネイティブ ストレージをデプロイおよび管理する方法について説明します。 Azure Container Storage を今すぐデプロイしない場合は、このチュートリアルをスキップして、 AKS でのアプリケーションのデプロイに直接進むことができます。 このチュートリアル シリーズでは、基本的なネットショップ アプリケーションに Azure Container Storage は必要ありません。

Azure Container Storage では、データベース、分析プラットフォーム、高パフォーマンス アプリケーションなど、さまざまなワークロードに合わせて調整されたコンテナーネイティブ ストレージを提供することで、Kubernetes でのステートフル アプリケーションの管理が簡素化されます。

Important

このチュートリアルは、AKS Standard クラスターにのみ適用されます。 前のチュートリアルで AKS Automatic を選択した場合は、このチュートリアルをスキップし、引き続き AKS にアプリケーションをデプロイします

このチュートリアルの終わりまでに、次の操作を行います。

  • Azure Container Storage が Kubernetes で多様なワークロードをサポートする方法について説明します。
  • AKS クラスターに Azure Container Storage をデプロイします。
  • 汎用エフェメラル ボリュームを作成します。

開始する前に

前のチュートリアルでは、コンテナー イメージを作成し、それを ACR インスタンスにアップロードし、AKS クラスターを作成しました。 「チュートリアル 1 - AKS のアプリケーションを準備する」から始めてください。

このチュートリアルでは、課金対象のリソースを作成し、AKS クラスターの設定を更新して拡張機能をインストールするためのアクセス許可が必要です。 AKS クラスターを含むリソース グループへの少なくとも 共同作成者 アクセス権を持つ ID を使用します。

  • Azure Container Storage リージョンの可用性を確認して、ターゲット リージョンがサポートされていることを確認します。

  • 最新バージョンの Azure CLI (2.83.0 以降) をインストールし、 az loginでサインインします。 az upgradeは使用できないため、Azure Cloud Shell を使用しないでください。

  • Kubernetes コマンド ライン クライアント ( kubectl) をインストールします。 az aks install-cliを実行してローカルにインストールできます。 その他のインストール オプションについては、「 kubectl のインストール」を参照してください。

Important

このチュートリアルは、ローカル NVMe ディスクと Azure Elastic SAN をバッキング ストレージの種類としてサポートする Azure Container Storage (バージョン 2.x.x) に適用されます。 このチュートリアルでは、ローカル NVMe を使用し、一般的なエフェメラル ボリュームを作成します。 ローカル NVMe を使用するには、VM SKU で 、ストレージ最適化 VM や GPU アクセラレータ VM などのローカル NVMe データ ディスクがサポートされている必要があります。

Azure Elastic SAN を使用する場合は、「Azure Elastic SAN で Azure Container Storage を使用する」を参照してください。

Kubernetes 拡張機能をインストールする

次のコマンドを実行して、 k8s-extension の最新バージョンを追加またはアップグレードします。

az extension add --upgrade --name k8s-extension

続行する前に、拡張機能が使用可能であることを確認します。

az extension show --name k8s-extension --query version --output tsv

AKS クラスターで Azure Container Storage を有効にする

次のコマンドを実行して、ローカル NVMe を使用して既存の AKS クラスターで Azure Container Storage を有効にします。 Azure Container Storage は、利用可能な最新バージョンをインストールし、それ自体を自動的に更新します。 手動バージョンの選択はサポートされていません。

az aks update -n myAKSCluster -g myResourceGroup --enable-azure-container-storage ephemeralDisk

このコマンドが承認エラーで失敗した場合は、 az account show を実行してアクティブなサブスクリプションを確認し、ID に AKS クラスターを更新するアクセス許可があることを確認します。

デプロイには最大 5 分かかる場合があります。 完了すると、AKS クラスターには Azure Container Storage がインストールされ、ローカル NVMe ストレージの種類のコンポーネントがデプロイされます。 また、既定の local-csi ストレージ クラスも作成されます。

クラスターに接続して状態を確認する

前のチュートリアルからクラスターにまだ接続していない場合は、次のコマンドを実行します。 既に接続している場合は、このセクションをスキップできます。

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

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

    コマンドからコンテキスト エントリが ~/.kube/configにマージされたことを報告した後に続行します。

  2. クラスター ノードを一覧表示して、接続を確認します。

    kubectl get nodes
    
  3. すべてのノードが Readyの状態を報告していることを確認します。

ストレージ クラスを確認する

次のコマンドを実行して、ストレージ クラスが作成されていることを確認します。

kubectl get storageclass local-csi

次のような出力が表示されます。

NAME        PROVISIONER               RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-csi   localdisk.csi.acstor.io   Delete          WaitForFirstConsumer   true                   10s

汎用エフェメラルボリュームを用いてポッドをデプロイする

汎用エフェメラル ボリュームを使用するベンチマークとワークロード シミュレーション用の Fio (フレキシブル I/O テスター) を使用してポッドを作成します。

  1. fiopod.yamlという名前の YAML マニフェスト ファイルを作成します。 たとえば、 code fiopod.yamlを実行します。

  2. 次のコードを貼り付けて、ファイルを保存します。

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
      containers:
        - name: fio
          image: mayadata/fio
          args: ["sleep", "1000000"]
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              spec:
                volumeMode: Filesystem
                accessModes: ["ReadWriteOnce"]
                storageClassName: local-csi
                resources:
                  requests:
                    storage: 10Gi
    
  3. YAML マニフェスト ファイルを適用してポッドをデプロイします。

    kubectl apply -f fiopod.yaml
    

デプロイを確認し、ベンチマークを実行する

ポッドが実行されていることを確認します。

kubectl get pod fiopod

ポッドが「稼働中」の状態で表示されていることを確認してください。 実行したら、Fio ベンチマーク テストを実行できます。

kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60

これで、ローカル NVMe をストレージとして使用するポッドがデプロイされ、Kubernetes ワークロードに使用できるようになりました。

Azure Container Storage の詳細については、「Azure Container Storage とは」を参照してください。

リソースをクリーンアップする

このチュートリアル シリーズの残りの部分には Azure Container Storage は必要ないため、不要な Azure 料金が発生しないように、今すぐ削除することをお勧めします。

  1. ポッドを削除します。

    kubectl delete pod fiopod
    
  2. 汎用エフェメラル ボリュームを削除します。

    kubectl delete pv ephemeralvolume
    

    このコマンドが NotFoundを返す場合は、続行します。 汎用エフェメラルボリュームは、ポッドの削除時に自動的に削除されます。

  3. 拡張機能インスタンスを削除します。

    az aks update -n myAKSCluster -g myResourceGroup --disable-azure-container-storage
    

次のステップ

このチュートリアルでは、AKS クラスターに Azure Container Storage をデプロイしました。 以下の方法を学習しました。

  • AKS クラスターで Azure Container Storage を有効にします。
  • 汎用エフェメラル ボリュームを使用してポッドをデプロイします。

次のチュートリアルでは、クラスターにアプリケーションをデプロイする方法について説明します。