すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ENSディスクの使用

最終更新日:Dec 19, 2024

エッジノードサービス (ENS) ディスクは、ACK EdgeクラスターのENSノードで使用されます。 ACK EdgeクラスターのContainer Storage Interface (CSI) プラグインを使用して、静的および動的にプロビジョニングされたENSディスクボリュームを作成できます。 このトピックでは、CSIプラグインを使用して作成された静的および動的にプロビジョニングされたENSディスクボリュームをマウントする方法について説明します。

前提条件

使用上の注意

  • アプリケーションの展開中に、StorageClassを使用して、ディスクを購入する永続ボリューム (PV) を自動的に作成することをお勧めします。 ディスクを購入した場合は、静的にプロビジョニングされたディスクボリュームを使用できます。

  • ディスクを購入する際、指定したディスクサイズは、個々のディスクに対応する容量範囲を超えることはできません。 詳細については、「ディスクタイプ」をご参照ください。

  • システムがポッドを再作成すると、ポッドにマウントされた元のディスクが再マウントされます。 再作成中にシステムがポッドを元のゾーンにスケジュールできなかった場合、ポッドは保留状態のままになります。

  • 動的プロビジョニングは、従量課金ディスクのみをサポートします。

    ディスクの課金可能な項目の詳細については、「ブロックストレージデバイスの課金」をご参照ください。 ディスクの料金の詳細については、Elastic Compute Service製品ページをご覧ください。

  • Alibaba Cloudストレージチームが提供するENSディスクは共有できません。 ディスクは1つのポッドにのみマウントできます。

  • ACK Edgeクラスターでは、ENSディスクは、ENSディスクと同じリージョンにあるENSノードにのみマウントできます。

  • ENSディスクを再利用または削除することはできません。 で関連する操作を実行できます。

    Edge Node Serviceコンソール。

動的にプロビジョニングされたENSディスクボリュームの使用

ステップ1: StorageClassの作成

異なるリージョンのクラスターでは、次のいずれかの方法を使用してStorageClassを作成できます。

方法1: WaitForFirstConsumerモードでStorageClassを作成する

WaitForFirstConsumerモードでは、ACK Edgeクラスターで複数のリージョンを使用できるという問題を解決できます。 次の例では、storage-class-csi-topology.yamlファイルを使用してStorageClassを作成します。

  1. storage-class-topology.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-ens-disk-available
    provisioner: ensplugin.csi.alibabacloud.com
    parameters:
      type: available
      fsType: ext4
    volumeBindingMode: WaitForFirstConsumer
    reclaimPolicy: Retain
    allowVolumeExpansion: false

    パラメーター

    説明

    name

    StorageClassの名前。

    provisioner

    値をensplugin.csi.alibabacloud.comに設定します。 StorageClassを作成するには、ENSディスク・プロバイショナ・プラグインを使用します。

    type

    ディスクの種類

    regionId

    必要に応じて、 ディスクが自動的に作成されるリージョン。

    reclaimPolicy

    ディスク再利用ポリシー。 Retainのみがサポートされています。 永続ボリューム要求 (PVC) を削除すると、PVとディスクのデータは保持され、手動で削除する必要があります。

    volumeBindingMode

    ディスクのバインドモード。 デフォルト値: Immediate。 このパラメーターをWaitForFirstConsumerに設定することもできます。

    • Immediate: StorageClassを使用するPVCが作成されると、ディスクが作成されます。 このようにして、ディスクを使用するポッドを作成する前に、ディスクが作成され、PVがプロビジョニングされます。

    • WaitForFirstConsumer: PVCを使用するポッドが作成されるまで、PVのバインドとプロビジョニングを遅延させます。 ポッドがノードにスケジュールされると、ノードがデプロイされ、PVとしてプロビジョニングされるゾーンにディスクが作成されます。

  2. 以下のコマンドを実行し、StorageClass を作成します。

    kubectl apply -f storage-class-topology.yaml
  3. 作成したStorageClassを表示します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ボリューム] > [StorageClasses] を選択します。

    [StorageClasses] ページで、作成したStorageClassを表示できます。

方法2: ディスクを作成してポッドを作成することによってStorageClassを作成する

  1. storage-class-csi.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-ens-disk-available
    provisioner: ensplugin.csi.alibabacloud.com
    parameters:
      type: available
      regionId: xxx
    reclaimPolicy: Retain
    allowVolumeExpansion: false
    volumeBindingMode: Immediate
  2. 以下のコマンドを実行し、StorageClass を作成します。

    kubectl apply -f storage-class-csi.yaml
  3. 作成したStorageClassを表示します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ボリューム] > [StorageClasses] を選択します。

    [StorageClasses] ページで、作成したStorageClassを表示できます。

ステップ2: PVCの作成

  1. pvc-ssd.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: Filesystem
      resources:
        requests:
          storage: 25Gi
      storageClassName: alicloud-ens-disk-available
  2. 以下のコマンドを実行し、PVC を作成します。

    kubectl create -f pvc-ssd.yaml
  3. 作成したPVCを表示します。

    詳細ページの左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリュームクレーム] を選択します。 [永続的なボリューム要求] ページで、作成されたPVCを表示できます。

ステップ3: アプリケーションの作成

  1. pvc-dynamic.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    次のテンプレートを使用して、nginx-dynamicという名前のアプリケーションを作成し、PVCをアプリケーションにマウントします。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx-dynamic
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: pvc-disk
              mountPath: /data
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: disk-pvc

    パラメーター

    説明

    mountPath

    ディスクがマウントされるパス。

    claimName

    アプリケーションにマウントされているPVCの名前。

  2. 次のコマンドを実行してアプリケーションを作成し、PVCをアプリケーションにマウントします。

    kubectl create -f pvc-dynamic.yaml
  3. 作成したアプリケーションを表示します。

    詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [StatefulSets] を選択します。 StatefulSetsページで、作成したアプリケーションを見つけることができます。

静的にプロビジョニングされたENSディスクボリュームの使用

ステップ1: PVの作成

  1. pv-static.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: csi-pv
      labels:
        alicloud-pvname: static-disk-pv
    spec:
      capacity:
        storage: 25Gi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ensplugin.csi.alibabacloud.com
        volumeHandle: "<your-disk-id>"
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.ensplugin.csi.alibabacloud.com/region
              operator: In
              values:
              - "<your-node-region-id>"     # The region ID of the ENS node. To view the region ID of an ENS node, view the topology.ensplugin.csi.alibabacloud.com/region parameter in the label of the ENS node.

    パラメーター

    説明

    name

    PV の名前。

    labels

    PVに追加するラベル。

    ストレージ

    クラウドディスクの使用可能なストレージ。

    accessModes

    PVのアクセスモード。

    persistentVolumeReclaimPolicy

    PVの再利用ポリシー。

    driver

    ドライバーのタイプ。 値ensplugin.csi.alibabacloud.comは、CSIプラグイン内のENSディスクが使用されることを指定する。

    volumeHandle

    PVに関連付けられているクラウドディスクのID。

    nodeAffinity

    PVとPVCが属するゾーンに関する情報。

    このパラメーターを設定して、PVとPVCを使用するポッドがスケジュールされるゾーンを指定できます。

  2. 次のコマンドを実行してPVを作成します。

    kubectl create -f pv-static.yaml
  3. 作成したPVを表示します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ボリューム] > [ボリューム] を選択します。

    [Persistent Volumes] ページで、作成したPVを表示できます。

ステップ2: PVCの作成

  1. pvc-static.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: csi-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 25Gi
      selector:
        matchLabels:
          alicloud-pvname: static-disk-pv

    パラメーター

    説明

    name

    PVCの名前。

    accessModes

    PVCのアクセスモード。

    ストレージ

    PVCが主張する容量。 請求される容量は、PVCに結合されるPVの容量を超えることはできない。

    matchLabels

    PVを選択してPVCにバインドするために使用されるラベル。 ラベルは、PVCに結合されるPVのラベルと同じでなければなりません。

  2. 以下のコマンドを実行し、PVC を作成します。

    kubectl create -f pvc-static.yaml
  3. 作成したPVCを表示します。

    詳細ページの左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリュームクレーム] を選択します。 [永続的なボリューム要求] ページで、作成されたPVCを表示できます。

ステップ3: アプリケーションの作成

この例では、webアプリケーションが作成され、作成したPVCでマウントされます。

  1. web.yamlという名前のファイルを作成し、次のコンテンツをファイルにコピーします。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: pvc-disk
              mountPath: /data
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: csi-pvc

    パラメーター

    説明

    mountPath

    ディスクがマウントされるパス。

    claimName

    アプリケーションにマウントされているPVCの名前。

  2. 次のコマンドを実行して、PVCを使用して静的にプロビジョニングされたENSディスクボリュームでマウントされたアプリケーションを作成します。

    kubectl apply -f web.yaml
  3. 詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [StatefulSets] を選択します。

    [StatefulSets] ページで、webアプリケーションを表示し、アプリケーションを期待どおりに起動できます。 これは、ENSディスクがマウントされていることを示す。