5.12. Azure Disk CSI Driver Operator


5.12.1. 概要

OpenShift Container Platform は、Microsoft Azure Disk Storage の Container Storage Interface (CSI) ドライバーを使用して永続ボリューム (PV) をプロビジョニングできます。

CSI Operator およびドライバーを使用する場合は、永続ストレージ および CSI ボリュームの設定 を理解しておくことが推奨されます。

Azure Disk ストレージアセットにマウントする CSI でプロビジョニングされた永続ボリューム (PV) を作成するには、OpenShift Container Platform は、デフォルトで Azure Disk CSI Driver Operator および Azure Disk CSI ドライバーを openshift-cluster-csi-drivers namespace にインストールします。

  • Azure Disk CSI Driver Operator: 永続ボリューム要求 (PVC) の作成に使用できる managed-csi というストレージクラスを提供します。Azure Disk CSI Driver Operator は、ストレージボリュームをオンデマンドで作成できるようにし、クラスター管理者がストレージを事前にプロビジョニングする必要がなくすことで、動的ボリュームのプロビジョニングをサポートします。必要に応じて、このデフォルトのストレージクラスを無効にできます (デフォルトストレージクラスの管理 を参照)。
  • Azure Disk CSI ドライバー を使用すると、Azure Disk PV を作成し、マウントできます。

5.12.2. CSI について

ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。

CSI Operator は、インツリーボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Container Platform ユーザーに付与します。

注記

OpenShift Container Platform は、Azure Disk インツリーボリュームプラグインを同等の CSI ドライバーに自動的に移行します。詳細は、CSI 自動移行を参照してください。

5.12.3. ストレージアカウントタイプを使用したストレージクラスの作成

ストレージクラスを使用すると、ストレージのレベルや使用状況を区別し、記述することができます。ストレージクラスを定義することで、動的にプロビジョニングされた永続ボリュームを取得できます。

ストレージクラスを作成するときに、ストレージアカウントの種類を指定できます。これは、Azure ストレージアカウントの SKU の層に対応します。有効なオプションは、Standard_LRSPremium_LRSStandardSSD_LRSUltraSSD_LRSPremium_ZRSStandardSSD_ZRS、および PremiumV2_LRS です。Azure SKU レベルを見つける方法は、SKU Types を参照してください。

ZRS と PremiumV2_LRS の両方に、いくつかのリージョン制限があります。これらの制限は、ZRS の制限 および Premium_LRS の制限 を参照してください。

前提条件

  • 管理者権限を持つ OpenShift Container Platform クラスターへのアクセス

手順

次の手順を使用して、ストレージアカウントの種類でストレージクラスを作成します。

  1. 次のような YAML ファイルを使用して、ストレージアカウントの種類を指定するストレージクラスを作成します。

    $ oc create -f - << EOF
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage-class> 1
    provisioner: disk.csi.azure.com
    parameters:
      skuName: <storage-class-account-type> 2
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    EOF
    1
    ストレージクラス名。
    2
    ストレージアカウントの種類。これは、Azure ストレージアカウントの SKU 層 (`Standard_LRS`、Premium_LRSStandardSSD_LRSUltraSSD_LRSPremium_ZRSStandardSSD_ZRSPremiumV2_LRS) に対応しています。
    注記

    PremiumV2_LRS の場合、storageclass.parameterscachingMode: None を指定します。

  2. ストレージクラスを一覧表示して、ストレージクラスが作成されたことを確認します。

    $ oc get storageclass

    出力例

    $ oc get storageclass
    NAME                    PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    azurefile-csi           file.csi.azure.com   Delete          Immediate              true                   68m
    managed-csi (default)   disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   68m
    sc-prem-zrs             disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   4m25s 1

    1
    ストレージアカウントタイプを使用する新しいストレージクラス。

5.12.4. ユーザー管理型の暗号化

ユーザー管理型の暗号化機能を使用すると、インストール時に OpenShift Container Platform ノードのルートボリュームを暗号化するキーを指定でき、すべてのマネージドストレージクラスはこれらのキーを使用してプロビジョニングされたストレージボリュームを暗号化できます。install-config YAML ファイルの platform.<cloud_type>.defaultMachinePlatform フィールドにカスタムキーを指定する必要があります。

この機能は、次のストレージタイプをサポートします。

  • Amazon Web Services (AWS) Elastic Block storage (EBS)
  • Microsoft Azure Disk ストレージ
  • Google Cloud Platform (GCP) 永続ディスク (PD) ストレージ
注記

OS (ルート) ディスクが暗号化されており、ストレージクラスに暗号化キーが定義されていない場合、Azure Disk CSI ドライバーは、デフォルトで OS ディスク暗号化キーを使用して、プロビジョニングされたストレージボリュームを暗号化します。

Azure のユーザー管理型の暗号化を使用してインストールする方法の詳細は、Azure のユーザー管理型の暗号化を有効にする を参照してください。

5.12.5. PVC を使用して Ultra ディスクと共にマシンをデプロイするマシンセット

Ultra ディスクと共にマシンをデプロイする Azure で実行されるマシンセットを作成できます。Ultra ディスクは、最も要求の厳しいデータワークロードでの使用を目的とした高性能ストレージです。

in-tree プラグインおよび CSI ドライバーの両方が、Ultra ディスクを有効にするための PVC の使用をサポートします。PVC を作成せずに、データディスクとしての Ultra デイスクと共にマシンをデプロイすることもできます。

5.12.5.1. マシンセットを使用した Ultra ディスクを持つマシンの作成

マシンセットの YAML ファイルを編集することで、Azure 上に Ultra ディスクと共にマシンをデプロイできます。

前提条件

  • 既存の Microsoft Azure クラスターがある。

手順

  1. 既存の Azure MachineSet カスタムリソース (CR) をコピーし、次のコマンドを実行して編集します。

    $ oc edit machineset <machine-set-name>

    ここで、<machine-set-name> は、Ultra ディスクとともにマシンをプロビジョニングするマシンセットです。

  2. 示された位置に次の行を追加します。

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    spec:
      template:
        spec:
          metadata:
            labels:
              disk: ultrassd 1
          providerSpec:
            value:
              ultraSSDCapability: Enabled 2
    1
    このマシンセットによって作成されるノードを選択するために使用するラベルを指定します。この手順では、この値に disk.ultrassd を使用します。
    2
    これらの行により、Ultra ディスクの使用が可能になります。
  3. 次のコマンドを実行して、更新された設定を使用してマシンセットを作成します。

    $ oc create -f <machine-set-name>.yaml
  4. 以下の YAML 定義が含まれるストレージクラスを作成します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ultra-disk-sc 1
    parameters:
      cachingMode: None
      diskIopsReadWrite: "2000" 2
      diskMbpsReadWrite: "320" 3
      kind: managed
      skuname: UltraSSD_LRS
    provisioner: disk.csi.azure.com 4
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer 5
    1
    ストレージクラスの名前を指定します。この手順では、この値に ultra-disk-sc を使用しています。
    2
    ストレージクラスの IOPS の数値を指定します。
    3
    ストレージクラスのスループットを MBps 単位で指定します。
    4
    Azure Kubernetes Service (AKS) バージョン 1.21 以降の場合は、disk.csi.azure.com を使用します。以前のバージョンの AKS の場合は、kubernetes.io/azure-disk を使用します。
    5
    オプション: ディスクを使用する Pod の作成を待機するには、このパラメーターを指定します。
  5. 以下の YAML 定義が含まれる、ultra-disk-sc ストレージクラスを参照する永続ボリューム要求 (PVC) を作成します。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: ultra-disk 1
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: ultra-disk-sc 2
      resources:
        requests:
          storage: 4Gi 3
    1
    PVC の名前を指定します。この手順では、この値に ultra-disk を使用しています。
    2
    この PVC は ultra-disk-sc ストレージクラスを参照します。
    3
    ストレージクラスのサイズを指定します。最小値は 4Gi です。
  6. 以下の YAML 定義が含まれる Pod を作成します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-ultra
    spec:
      nodeSelector:
        disk: ultrassd 1
      containers:
      - name: nginx-ultra
        image: alpine:latest
        command:
          - "sleep"
          - "infinity"
        volumeMounts:
        - mountPath: "/mnt/azure"
          name: volume
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: ultra-disk 2
    1
    Ultra ディスクの使用を有効にするマシンセットのラベルを指定します。この手順では、この値に disk.ultrassd を使用します。
    2
    この Pod は ultra-disk PVC を参照します。

検証

  1. 次のコマンドを実行して、マシンが作成されていることを確認します。

    $ oc get machines

    マシンは Running 状態になっているはずです。

  2. 実行中でノードが接続されているマシンの場合、次のコマンドを実行してパーティションを検証します。

    $ oc debug node/<node-name> -- chroot /host lsblk

    このコマンドでは、oc debug node/<node-name> がノード <node-name> でデバッグシェルを開始し、-- を付けてコマンドを渡します。渡されたコマンド chroot /host は、基盤となるホスト OS バイナリーへのアクセスを提供し、lsblk は、ホスト OS マシンに接続されているブロックデバイスを表示します。

次のステップ

  • Pod 内から Ultra ディスクを使用するには、マウントポイントを使用するワークロードを作成します。次の例のような YAML ファイルを作成します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: ssd-benchmark1
    spec:
      containers:
      - name: ssd-benchmark1
        image: nginx
        ports:
          - containerPort: 80
            name: "http-server"
        volumeMounts:
        - name: lun0p1
          mountPath: "/tmp"
      volumes:
        - name: lun0p1
          hostPath:
            path: /var/lib/lun0p1
            type: DirectoryOrCreate
      nodeSelector:
        disktype: ultrassd

5.12.5.2. Ultra ディスクを有効にするマシンセットのリソースに関するトラブルシューティング

このセクションの情報を使用して、発生する可能性のある問題を理解し、回復してください。

5.12.5.2.1. Ultra ディスクがサポートする永続ボリューム要求をマウントできない

Ultra ディスクでサポートされる永続ボリューム要求のマウントに問題がある場合、Pod は ContainerCreating 状態のままになり、アラートがトリガーされます。

たとえば、additionalCapabilities.ultraSSDEnabled パラメーターが Pod をホストするノードをサポートするマシンで設定されていない場合、以下のエラーメッセージが表示されます。

StorageAccountType UltraSSD_LRS can be used only when additionalCapabilities.ultraSSDEnabled is set.
  • この問題を解決するには、以下のコマンドを実行して Pod を記述します。

    $ oc -n <stuck_pod_namespace> describe pod <stuck_pod_name>

5.12.6. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.