一个帮助将虚拟机工作负载从其他源集群迁移到现有Harvester集群的插件

443 阅读1分钟

vm-import-controller

vm-import-controller是一个插件,用于帮助将虚拟机工作负载从其他源集群迁移到现有Harvester集群。

目前,将支持以下源提供者:

  • vmware
  • openstack

API

vm-import-controller引入了两个CRD

来源

sources允许用户定义有效的源群组。

比如说:

apiVersion: source.harvesterhci.io/v1beta1
kind: Vmware
metadata:
  name: vcsim
  namespace: default
spec:
  endpoint: "https://vscim/sdk"
  dc: "DCO"
  credentials:
    name: vsphere-credentials
    namespace: default

秘密包含vcenter端点的凭证:

apiVersion: v1
kind: Secret
metadata: 
  name: vsphere-credentials
  namespace: default
stringData:
  "username": "user"
  "password": "password"

作为调节过程的一部分,控制器将登录到vcenter,并验证源规格中指定的dc 是有效的。

一旦这个检查被通过,源就被标记为准备好了,可以用于虚拟机迁移:

$ kubectl get vmware.source 
NAME      STATUS
vcsim   clusterReady

导入工作(ImportJob

ImportJob crd为用户提供了一种方法来定义源虚拟机和与实际源集群的映射,以执行虚拟机的导出-导入。

一个导入任务的例子如下:

apiVersion: importjob.harvesterhci.io/v1beta1
kind: VirtualMachine
metadata:
  name: alpine-export-test
  namespace: default
spec: 
  virtualMachineName: "alpine-export-test"
  networkMapping:
  - sourceNetwork: "dvSwitch 1"
    destinationNetwork: "default/vlan1"
  - sourceNetwork: "dvSwitch 2"
    destinationNetwork: "default/vlan2"
  sourceCluster: 
    name: vcsim
    namespace: default
    kind: Vmware
    apiVersion: source.harvesterhci.io/v1beta1

这将触发控制器在vmware源vcsim上导出名为 "alpine-export-test "的虚拟机,以便导出、处理并重新创建到收获者集群中。

根据虚拟机的大小,这可能需要一段时间,但用户应该看到VirtualMachineImages ,为定义的虚拟机中的每个磁盘创建。

networkMapping 中的项目列表将定义源网络接口如何被映射到收割机网络中。

如果没有找到匹配的,那么每个不匹配的网络接口都会被连接到默认的网络接口。managementNetwork

一旦虚拟机被成功导入,该对象将反映出以下状态

$ kubectl get virtualmachine.importjob
NAME                 STATUS
alpine-export-test   virtualMachineRunning