次の方法で共有


Azure Elastic SAN (プレビュー) で Azure コンテナー ストレージを使用する

Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 Azure Elastic SAN は、SAN のデプロイ、スケーリング、管理、構成を簡略化する完全に統合されたソリューションであり、高可用性などの組み込みのクラウド機能も提供します。

プレビュー機能として、Azure コンテナー ストレージで Azure Elastic SAN を使用することを構成できます。 この記事では、その構成を行う方法について説明します。 この記事の最後で、Elastic SAN をストレージとして使用するポッドができます。

前提条件

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

  • Azure Container Storage をまだインストールしていない場合は、Azure Kubernetes Service での Azure Container Storage の使用に関する記事の手順に従ってください。

  • ターゲット リージョンが Azure Container Storage リージョンでサポート対象になっているかどうかを確認します。

  • Azure Container Storage 所有者ロールまたは Azure Container Storage 共同作成者ロールのいずれかがあることを確認します。 これらのロールのいずれかが、Azure Container Storage と Elastic SAN リソースとの通信を許可するアクセス許可を付与します。 この変更を行うには、Azure portal のサブスクリプション ページに移動します。 [アクセス制御 (IAM) > ロール割り当ての追加] を選択 し、[ジョブ関数ロール] タブで「Azure Container Storage 所有者」 または「Azure Container Storage 共同作成者」を検索します。[割り当ての表示>] の >[割り当ての追加] を選択 し、アカウントを追加します。

  • Azure Elastic SAN (プレビュー) を含む Azure コンテナー ストレージを使うには、AKS クラスターに、それぞれが 4 つ以上の仮想 CPU (vCPU) を備えたクラスター ノード用の汎用 VM (standard_d4s_v5 など) を少なくとも 3 つ含むノード プールが必要です。

制限事項

Azure Container Storage を使用して Elastic SAN をデプロイおよび調整する場合、次の機能は現在サポートされていません。

  • ボリューム スナップショット
  • ストレージ プールの拡張

リージョン別の提供状況

Azure Container Storage は、次の Azure リージョンのサブセットでのみ使用できます。

  • (アフリカ) 南アフリカ北部
  • (アジア太平洋) オーストラリア東部
  • (アジア太平洋) 東アジア
  • (アジア太平洋) 東日本
  • (アジア太平洋) 韓国中部
  • (アジア太平洋) 東南アジア
  • (アジア太平洋) インド中部
  • (ヨーロッパ) フランス中部
  • (ヨーロッパ) ドイツ中西部
  • (ヨーロッパ) 北ヨーロッパ
  • (ヨーロッパ) 西ヨーロッパ
  • (ヨーロッパ) 英国南部
  • (ヨーロッパ) スウェーデン中部
  • (ヨーロッパ) スイス北部
  • (中東) アラブ首長国連邦北部
  • (北米) 米国東部
  • (北米)米国東部 2
  • (北米) 米国西部
  • (北米)米国西部 2
  • (北米) 米国西部 3
  • (北米) 米国中部
  • (北米) 米国中北部
  • (北米) 米国中南部
  • (北米) 米国中西部
  • (北米) カナダ中部
  • (北米) カナダ東部
  • (南アメリカ) ブラジル南部

永続ボリュームを作成してアタッチする

次の手順に従って永続ボリュームを作成してアタッチします。

1.ストレージ プールを作成する

まず、YAML マニフェスト ファイルで定義することによって、Kubernetes クラスターのストレージの論理グループであるストレージ プールを作成します。

az aks create または az aks update コマンドを使って Azure Container Storage を有効にした場合は、記憶域プールが既に存在している可能性があります。 kubectl get sp -n acstor を使って記憶域プールの一覧を取得します。 使いたい記憶域プールが既に使用可能な場合は、このセクションをスキップして、「使用可能なストレージ クラスを表示する」に進むことができます。

Azure Elastic SAN (プレビュー) を使ってストレージ プールを作成するには、次の手順に従います。

  1. 任意のテキスト エディターを使用して、code acstor-storagepool.yaml などの YAML マニフェスト ファイルを作成します。

  2. 次のコードを貼り付けます。 ストレージ プールの name の値は何でもかまいません。 Gi または Ti で必要なストレージ容量を反映するようストレージを調整し、ファイルを保存します。 Azure Elastic SAN では現在、ストレージ プールのサイズ変更はサポートされていません。

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: managed
      namespace: acstor
    spec:
      poolType:
        elasticSan: {}
      resources:
        requests: {"storage": 1Ti}
    
  3. YAML マニフェスト ファイルを適用してストレージ プールを作成します。

    kubectl apply -f acstor-storagepool.yaml 
    

    ストレージ プールの作成が完了すると、次のようなメッセージが表示されます。

    storagepool.containerstorage.azure.com/managed created
    

    このコマンドを実行して、ストレージ プールの状態を確認することもできます。 <storage-pool-name> はストレージ プールの name の値に置き換えます。 この例では、値は managed.になります。

    kubectl describe sp <storage-pool-name> -n acstor
    

ストレージ プールが作成されると、Azure Container Storage により、名前付け規則 acstor-<storage-pool-name> を使用してストレージ クラスが自動的に作成されます。 また、Azure Elastic SAN リソースも作成されます。

2.使用可能なストレージ クラスを表示する

ストレージ プールを使用する準備ができたら、ストレージ クラスを選択して、永続ボリューム要求の作成時と永続ボリュームのデプロイ時にストレージが動的に作成される方式を定義する必要があります。

kubectl get sc を実行して、使用可能なストレージ クラスを表示します。 acstor-<storage-pool-name> というストレージ クラスがあることを確認します。

重要

internal が付いているストレージ クラスは使用しないでください。 これは、Azure Container Storage の動作に必要な内部ストレージ クラスです。

3.永続ボリューム要求の作成

永続ボリューム要求 (PVC) を使用して、ストレージ クラスに基づいてストレージを自動的にプロビジョニングします。 新しいストレージ クラスを使用して PVC を作成するには、次の手順に従います。

  1. 任意のテキスト エディターを使用して、code acstor-pvc.yaml などの YAML マニフェスト ファイルを作成します。

  2. 次のコードを貼り付けて、ファイルを保存します。 PVC name の値はどのような値にもすることができます。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: managedpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-managed # replace with the name of your storage class if different
      resources:
        requests:
          storage: 100Gi
    
  3. YAML マニフェスト ファイルを適用して PVC を作成します。

    kubectl apply -f acstor-pvc.yaml
    

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

    persistentvolumeclaim/managedpvc created
    

    次のコマンドを実行して、PVC の状態を確認できます。

    kubectl describe pvc managedpvc
    

PVC が作成されると、ポッドで使用できるようになります。

4.ポッドをデプロイして永続ボリュームをアタッチする

Fio (フレキシブル I/O テスター) を使用してベンチマークおよびワークロード シミュレーション用にポッドを作成し、永続ボリュームのマウント パスを指定します。 claimName には、永続ボリューム要求の作成時に使用した name の値を使用します。

  1. 任意のテキスト エディターを使用して、code acstor-pod.yaml などの YAML マニフェスト ファイルを作成します。

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

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      volumes:
        - name: managedpv
          persistentVolumeClaim:
            claimName: managedpvc
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: managedpv
    
  3. YAML マニフェスト ファイルを適用してポッドをデプロイします。

    kubectl apply -f acstor-pod.yaml
    

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

    pod/fiopod created
    
  4. ポッドが実行されていること、および永続ボリューム要求がポッドに正常にバインドされていることを確認します。

    kubectl describe pod fiopod
    kubectl describe pvc managedpvc
    
  5. 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
    

Elastic SAN をストレージとして使用するポッドをデプロイし、Kubernetes ワークロードに使用できるようになりました。

永続ボリュームとストレージ プールを管理する

永続ボリュームを作成したので、必要に応じてデタッチして再アタッチできます。 ストレージ プールを削除することもできます。

永続ボリュームをデタッチして再アタッチする

永続ボリュームをデタッチするには、永続ボリュームがアタッチされているポッドを削除します。 <pod-name> はポッドの名前 (fiopod など) に置き換えます。

kubectl delete pods <pod-name>

永続ボリュームを再アタッチするには、「ポッドをデプロイして永続ボリュームをアタッチする」の説明に従って、YAML マニフェスト ファイル内の永続ボリューム要求名を参照するだけです。

永続ボリューム要求がバインドされている永続ボリュームを確認するには、kubectl get pvc <persistent-volume-claim-name> を実行します。

ストレージ プールを削除する

ストレージ プールを削除する場合は、次のコマンドを実行します。 <storage-pool-name> はストレージ プール名に置き換えます。

kubectl delete sp -n acstor <storage-pool-name>

こちらもご覧ください