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のインストール
次のコマンドを実行してFlexvolume2CSIをインストールします。
Flexvolume2CSIはMacOSおよびLinuxをサポートします。
curl https://ack-csiplugin.oss-cn-hangzhou.aliyuncs.com/flexvolume2csi/get-translator.sh | bash
次のコマンドを実行して、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のクラスター情報の設定
次のコマンドを実行して、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ファイルのパス。 デフォルトでは、ファイル名は |
-b | FlexVolumeによって管理される元のPVCおよびPVのバックアップYAMLファイルのパス。 デフォルトでは、ファイル名は |
-n | 名前空間の名前。 名前空間を指定した場合、指定された名前空間内のPVおよびPVCのみが変換されます。 デフォルトでは、すべての名前空間のPVとPVCが変換されます。 |
-c | PVCの名前。 PVCを指定した場合、指定されたPVCとPVのみが変換されます。 このパラメーターは、 |
-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です。 |
例
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"
次のコマンドを実行して、クラスターにPVを作成します。
kubectl apply -f pv.yaml
クラスターにpvc.yamlという名前のファイルを作成し、次の内容をファイルに追加します。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nas spec: accessModes: - ReadWriteMany storageClassName: nas resources: requests: storage: 5Gi
次のコマンドを実行して、クラスターにPVCを作成します。
kubectl apply -f pvc.yaml
次のコマンドを実行して、PVがPVCにバインドされていることを確認します。
kubectl get pvc | grep pvc-nas
期待される出力:
pvc-nas Bound pv-nas 5Gi RWO nas 10s
次のコマンドを実行して、Flexvolume2CSIを使用してクラスター内のPVとPVCを変換します。
flexvolume2csi translate
次のコマンドを実行して、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が変換されることを示す。