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

Container Service for Kubernetes:Flexvolume2CSIを使用してPVおよびPVCをバッチ変換する

最終更新日:Dec 19, 2024

Flexvolume2CSI CLIを使用して、FlexVolumeによって管理される永続的ボリュームクレーム (PVC) および永続的ボリューム (PV) を、CSIによって管理されるPVCおよびPVにバッチ処理できます。 このトピックでは、Flexvolume2CSIを使用してPVCとPVをバッチ変換する方法について説明します。

仕組み

Flexvolume2CSIを使用して、クラスター内のすべてのPVC、指定された名前空間内のPVC、または指定されたPVCと対応するPVを一覧表示できます。 次に、Flexvolume2CSIを使用して、FlexVolumeで管理されるPVCおよびPVを、ラベルおよびFlexVolumeフィールドを含むCSIで管理されるPVCおよびPVに変換します。

重要

Flexvolume2CSIを使用して、標準のFile Storage NAS (NAS) 、Object Storage Service (OSS) 、およびディスクボリュームのみのPVおよびPVCを変換できます。 Flexvolume2CSI for CSIによって生成されたYAMLファイルをボリュームのプロビジョニングに使用する前に確認することを推奨します。

ステップ1: Flexvolume2CSIのインストール

  1. 次のコマンドを実行してFlexvolume2CSIをインストールします。

    Flexvolume2CSIはMacOSおよびLinuxをサポートします。

    curl https://ack-csiplugin.oss-cn-hangzhou.aliyuncs.com/flexvolume2csi/get-translator.sh | bash
  2. 次のコマンドを実行して、Flexvolume2CSIがインストールされていることを確認します。

    flexvolume2csi version

    期待される出力:

    flexvolume2csi: v1.0.2+b1de5bd
      BuildDate: 2024-04-09T07:20:26Z
      GitCommit: b1de5bdce11b4b59ddce38d91d868b5f35a431c1
      GitTreeState: clean
      GoVersion: go1.18.4
      Compiler: gc
      Platform: darwin/arm64

    出力は、Flexvolume2CSIがインストールされていることを示します。

ステップ2: Flexvolume2CSIのクラスター情報の設定

  1. 次のコマンドを実行して、Flexvolume2CSIのクラスター情報を設定します。

    flexvolume2csi configure

    期待される出力:

    Configuring profile 'default' ...
    Default Cluster Id (ClusterId of ACK Flexvolume Cluster) [c4869a2f603ca4e74****************]:
    Default Kubeconfig Path (default is ~/.kube/config) []:
    Saving profile[default] ...
    Done.

    パラメーター

    説明

    クラスターId

    FlexVolumeを使用するクラスターのID。

    クベコンフィグの道

    FlexVolumeを使用するクラスターのkubeconfigファイルのパス。 デフォルトは ~/.kube/configです。

ステップ3: クラスタ内のFlexVolumeによって管理されるPVおよびPVCをCSIによって管理されるPVおよびPVCに変換する

オプションパラメーター

次のコマンドを実行して、Flexvolume2CSIのオプションパラメーターを照会します。

flexvolume2csi translate help

期待される出力:

flexvolume2csi source add [-n namespace] [-c pvc] [-o outputfile] [-p prefix] [-s suffix] [-b backupfile] [-a apiversion] [-t storageclass]

Usage:
  flexvolume2csi translate [-n namespace] [-c pvc] [-o outputfile] [-p prefix] [-s suffix] [-b backupfile] [-a apiversion] [-t storageclass] [flags]

Examples:
  # Translate PVCs and related PVs in all namespaces
  flexvolume2csi translate -o output.txt

  # Translate PVCs and related PVs in default namespace
  flexvolume2csi translate -n default -o output.txt

  # Translate PVC test-pvc and related PV in default namespace
  flexvolume2csi translate -n default -p test-pvc -o output.txt


Flags:
  -a, --apiversion string     change pv/pvc apiversion (default "v1")
  -b, --backupfile string     path to backup (flexvolume) file (default "./backupfile.txt")
  -h, --help                  help for translate
  -n, --namespace string      specified namespace
  -o, --outputfile string     path to output (CSI) file (default "./outputfile.txt")
  -p, --prefix string         change pv/pvc name to prefix-xxx
  -c, --pvc string            specified pvc
  -t, --storageclass string   change storageclass name
  -s, --suffix string         change pv/pvc name to xxx-suffix

オプションパラメーター

説明

-o

CSIによって管理されるPVCおよびPVのYAMLファイルのパス。 デフォルトでは、ファイル名はoutputfile.txtで、現在のパスに生成されます。 このパラメーターを指定しないと、PVおよびPVCのYAMLコンテンツがstdoutファイルに追加されます。

-b

FlexVolumeによって管理される元のPVCおよびPVのバックアップYAMLファイルのパス。 デフォルトでは、ファイル名はbackupfile.txtで、現在のパスに作成されます。 このパラメーターを指定しない場合、PVCおよびPVはバックアップされません。

-n

名前空間の名前。 名前空間を指定した場合、指定された名前空間内のPVおよびPVCのみが変換されます。 デフォルトでは、すべての名前空間のPVとPVCが変換されます。

-c

PVCの名前。 PVCを指定した場合、指定されたPVCとPVのみが変換されます。 このパラメーターは、-nパラメーターと一緒に使用する必要があります。 デフォルトでは、指定された名前空間内のすべてのPVおよびPVCが変換されます。

-p

CSIによって管理されるPVCおよびPVのプレフィックス。 デフォルトでは、プレフィックスは指定されません。

たとえば、FlexVolumeによって管理されるPVCの名前がpvc-testで、プレフィックスがcsiの場合、CSIによって管理されるPVCの名前はcsi-pvc-testです。

-s

CSIによって管理されるPVCおよびPVの接尾辞。 デフォルトでは、プレフィックスは指定されません。

たとえば、FlexVolumeによって管理されるPVCの名前がpvc-testで、サフィックスがcsiの場合、CSIによって管理されるPVCの名前はpvc-test-csiです。

  1. FlexVolumeを使用するクラスターにpv.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-nas
    spec:
      capacity:
        storage: 5Gi
      storageClassName: nas
      accessModes:
        - ReadWriteMany
      flexVolume:
        driver: "alicloud/nas"
        options:
          server: "0cd8b4a576-u****.cn-hangzhou.nas.aliyuncs.com" #Replace the value with the actual mount target. 
          path: "/k8s"
          vers: "3"
          options: "nolock,tcp,noresvport"
  2. 次のコマンドを実行して、クラスターにPVを作成します。

    kubectl apply -f pv.yaml
  3. クラスターにpvc.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nas
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: nas
      resources:
        requests:
          storage: 5Gi
  4. 次のコマンドを実行して、クラスターにPVCを作成します。

    kubectl apply -f pvc.yaml
  5. 次のコマンドを実行して、PVがPVCにバインドされていることを確認します。

    kubectl get pvc | grep pvc-nas

    期待される出力:

    pvc-nas   Bound    pv-nas   5Gi       RWO            nas       10s
  6. 次のコマンドを実行して、Flexvolume2CSIを使用してクラスター内のPVとPVCを変換します。

    flexvolume2csi translate 
  7. 次のコマンドを実行して、CSIが管理するPVおよびPVCのYAMLファイルのコンテンツを印刷します。

    cat ./outputfile.yaml

    期待される出力:

    ---
    
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      labels:
        alicloud-pvname: pv-nas
      name: pv-nas
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 5Gi
      csi:
        driver: nasplugin.csi.alibabacloud.com
        volumeAttributes:
          path: /k8s
          server: 0cd8b4a576-u****.cn-hangzhou.nas.aliyuncs.com
        volumeHandle: pv-nas
      mountOptions:
      - nolock,tcp,noresvport
      - vers=3
      persistentVolumeReclaimPolicy: Retain
      storageClassName: nas
      volumeMode: Filesystem
    
    ---
    
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nas
      namespace: default
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-nas
      storageClassName: nas
      volumeMode: Filesystem
      volumeName: pv-nas

    出力は、PVおよびPVCが変換されることを示す。

関連ドキュメント