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

Container Service for Kubernetes:CLIを使用してディスクボリュームを動的にプロビジョニングする

最終更新日:Nov 11, 2024

ディスクを永続ボリューム (PV) として動的にプロビジョニングするには、StorageClassを手動で作成し、永続ボリューム要求 (PVC) のstorageClassNameフィールドを設定してディスクタイプを指定する必要があります。

指定したゾーンID (zoneId) でStorageClassを作成する

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

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: alicloud-disk-ssd-hangzhou-b
    provisioner: alicloud/disk
    parameters:
      type: cloud_ssd
      regionId: cn-hangzhou
      zoneId: cn-hangzhou-b
    reclaimPolicy: Retain

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    provisioner

    値をalicloud/diskに設定します。 これは、ディスクをプロビジョニングするために使用されるボリュームプラグインです。

    タイプ

    ディスクタイプ。 有効な値には、cloud_efficiency、cloud_ssd、cloud_essd、およびavailableが含まれます。 このパラメーターを使用可能に設定すると、システムは拡張SSD (ESSD) 、標準SSD、およびウルトラディスクの順序でディスクを作成しようとします。 システムはディスクが作成されるまで試行を続けます。

    regionId

    ディスクを作成するリージョン。

    reclaimPolicy

    ディスクを再利用するポリシー。 デフォルトでは、このパラメーターはDeleteに設定されています。 このパラメーターを "Retain" に設定することもできます。 高いデータセキュリティが必要な場合は、ユーザーエラーによるデータ損失を回避するために、このパラメーターをRetainに設定することを推奨します。

    zoneId

    ディスクを作成するゾーン。

    マルチゾーンクラスターの場合、複数のゾーンを指定できます。 例:

    zoneId: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c

    暗号化

    オプションです。 ディスクを暗号化するかどうかを指定します。 デフォルトでは、このパラメーターはfalseに設定されています。 これは、ディスクが暗号化されないことを指定します。

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

    kubectl apply -f storage-class.yaml

WaitForFirstConsumerモードでStorageClassを作成する

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: alicloud-disk-topology-ssd
provisioner: alicloud/disk
parameters:
    type: cloud_ssd
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
説明
  • WaitForFirstConsumerモードでStorageClassを作成せず、zoneidパラメーターが設定されていない場合、Disk-ControllerコンポーネントがデプロイされているゾーンにPVが作成されます。

  • WaitForFirstConsumerモードでStorageClassを作成せず、zoneidパラメーターが設定されている場合、システムはラウンドロビンアルゴリズムに基づいて指定されたゾーンでPVを作成しようとします。

  • WaitForFirstConsumerモードでStorageClassを作成すると、PVCを消費するポッドがスケジュールされているノードのディスクが作成されます。 ディスクは、スケジュールされたポッドのゾーンに作成されます。

PVC の作成

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: disk-ssd
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: alicloud-disk-ssd-hangzhou-b
  resources:
    requests:
      storage: 20Gi
---
kind: Pod
apiVersion: v1
metadata:
  name: disk-pod-ssd
spec:
  containers:
  - name: disk-pod
    image: nginx
    volumeMounts:
      - name: disk-pvc
        mountPath: "/mnt"
  restartPolicy: "Never"
  volumes:
    - name: disk-pvc
      persistentVolumeClaim:
        claimName: disk-ssd

以下のデフォルト設定が含まれています。

マルチゾーンクラスターでは、StorageClassを手動で作成して、ディスクが作成されるゾーンを指定する必要があります。

デフォルトでは、次のタイプのStorageClassがシングルゾーンクラスターに提供されます。

  • alicloud-disk-efficiency: ウルトラディスク。

  • alicloud-disk-ssd: 標準SSD。

  • alicloud-disk-essd: ESSD ディスク。

  • alicloud-disk-available: 高可用性モード。 このモードでは、システムは最初に標準SSDの作成を試みます。 SSDリソースが使い果たされた場合、システムはウルトラディスクの作成を試みます。

    重要

    v1.14.8.44 c23b62c5-aliyunより前のバージョンのalicloud-disk-controllerの場合、システムはESSD、標準SSD、ウルトラディスクの順序でディスクを作成しようとします。 システムはディスクが作成されるまで試行を続けます。

  • alicloud-disk-topology: WaitForFirstConsumerモードでディスクを作成します。

クラウドディスクを使用したマルチインスタンス StatefulSet の作成

volumeClaimTemplatesパラメーターを使用して、複数のPVCとPVを動的に作成し、PVをPVCにバインドできます。

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: disk-ssd
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: disk-ssd
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "alicloud-disk-ssd-hangzhou-b"
      resources:
        requests:
          storage: 20Gi

Container Service for Kubernetes (ACK) コンソールで動的にプロビジョニングされたディスクボリュームを使用することもできます。 詳細については、「ACKコンソールで動的にプロビジョニングされたディスクボリュームの使用」をご参照ください。