本ページでは、Container Storage Interface (CSI) プラグインを使用して静的ディスクボリュームを接続する方法について説明します。

始める前に

  • Kubernetes クラスターが作成され、CSI プラグインがクラスターにインストールされていること。
  • 従量課金ディスクが作成されていること。 詳細については、「クラウドディスクの作成」をご参照ください。

PV および PVC の作成

Elastic Compute Service (ECS) コンソールでディスクを作成したら、その IDを記録します。たとえば、 d-wz92s6d95go6ki9xge6bです。

現在、YAML ファイルのみを使用して、Container Service コンソールで CSI 永続ボリューム (PV) オブジェクトを作成できます。

  1. kubectl を利用した Kubernetes クラスターへの接続.
  2. 次のテンプレートを使用して、静的ボリュームを使用するための PV および永続ボリューム要求 (PVC) を作成します。
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: csi-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 25 Gi
      selector:
        matchLabels:
          alicloud-pvname: static-disk-pv
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: csi-pv
      labels:
        alicloud-pvname: static-disk-pv
    spec:
      capacity:
        storage: 25 Gi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: diskplugin.csi.alibabacloud.com
        volumeHandle: d-wz92s6d95go6ki9xge6b
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.diskplugin.csi.alibabacloud.com/zone
              operator: In
              values:
              - cn-shenzhen-a
    • driver: ドライバーのタイプ。

      このパラメーターをdiskplugin.csi.alibabacloud.com に設定すると、Alibaba Cloud CSI プラグインが使用されていることを示します。

    • volumeHandle: ディスク ID。
    • nodeAffinity: PV および PVC のゾーン。

      このパラメーターを設定することにより、PV および PVC が配置されているポッドを、対応するゾーンにスケジュールできます。

アプリケーションの作成

  1. nginx-disk-dept.yaml ファイルを作成し、次のコードをファイルにコピーします。
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1beta2
    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
  2. 次のコマンドを実行してアプリケーションを作成します。
    kubectl apply -f nginx-disk-dept.yaml