7.15.6. ローカル仮想マシンディスクの別のノードへの移動
ローカルボリュームストレージを使用する仮想マシンは、特定のノードで実行されるように移動することができます。
以下の理由により、仮想マシンを特定のノードに移動する場合があります。
- 現在のノードにローカルストレージ設定に関する制限がある。
- 新規ノードがその仮想マシンのワークロードに対して最適化されている。
ローカルストレージを使用する仮想マシンを移行するには、DataVolume を使用して基礎となるボリュームのクローンを作成する必要があります。クローン操作が完了したら、新規 DataVolume を使用できるように 仮想マシン設定を編集 するか、または 新規 DataVolume を別の仮想マシンに追加 できます。
cluster-admin
ロールのないユーザーには、複数の namespace 間でボリュームのクローンを作成できるように 追加のユーザーパーミッション が必要になります。
7.15.6.1. ローカルボリュームの別のノードへのクローン作成
基礎となる PersistentVolumeClaim (PVC) のクローンを作成して、仮想マシンディスクを特定のノードで実行するように移行することができます。
仮想マシンディスクのノードが適切なノードに作成されることを確認するには、新規の PersistentVolume (PV) を作成するか、または該当するノードでそれを特定します。一意のラベルを PV に適用し、これが DataVolume で参照できるようにします。
宛先 PV のサイズはソース PVC と同じか、またはそれよりも大きくなければなりません。宛先 PV がソース PVC よりも小さい場合、クローン作成操作は失敗します。
前提条件
- 仮想マシンが実行されていないこと。仮想マシンディスクのクローンを作成する前に、仮想マシンの電源を切ります。
手順
ノードに新規のローカル PV を作成するか、またはノードにすでに存在しているローカル PV を特定します。
nodeAffinity.nodeSelectorTerms
パラメーターを含むローカル PV を作成します。以下のマニフェストは、node01
に10Gi
のローカル PV を作成します。kind: PersistentVolume apiVersion: v1 metadata: name: <destination-pv> 1 annotations: spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi 2 local: path: /mnt/local-storage/local/disk1 3 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node01 4 persistentVolumeReclaimPolicy: Delete storageClassName: local volumeMode: Filesystem
ターゲットノードに存在する PV を特定します。設定の
nodeAffinity
フィールドを確認して、PV がプロビジョニングされるノードを特定することができます。$ oc get pv <destination-pv> -o yaml
以下のスニペットは、PV が
node01
にあることを示しています。出力例
... spec: nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname 1 operator: In values: - node01 2 ...
PV に一意のラベルを追加します。
$ oc label pv <destination-pv> node=node01
以下を参照する DataVolume マニフェストを作成します。
- 仮想マシンの PVC 名と namespace。
- 直前の手順で PV に適用されたラベル。
宛先 PV のサイズ。
apiVersion: cdi.kubevirt.io/v1alpha1 kind: DataVolume metadata: name: <clone-datavolume> 1 spec: source: pvc: name: "<source-vm-disk>" 2 namespace: "<source-namespace>" 3 pvc: accessModes: - ReadWriteOnce selector: matchLabels: node: node01 4 resources: requests: storage: <10Gi> 5
DataVolume マニフェストをクラスターに適用してクローン作成の操作を開始します。
$ oc apply -f <clone-datavolume.yaml>
DataVolume は、仮想マシンの PVC のクローンを特定のノード上の PV に作成します。