12.6. 关于 Migration Toolkit for Virtualization (MTV)供应商
要在 OpenShift Container Platform 集群间迁移虚拟机,您必须为迁移中包含的每个集群配置 OpenShift Container Platform 供应商。如果在集群中安装了 MTV,则本地供应商已存在。
跨集群实时迁移只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅以下链接:
12.6.1. 为供应商配置 root 证书颁发机构 复制链接链接已复制到粘贴板!
您必须为迁移中包含的每个集群配置 OpenShift Container Platform 供应商,每个供应商都需要一个证书颁发机构(CA)。务必要为整个集群配置 root CA,以避免 CA 过期,这会导致供应商失败。
流程
针对您要为其创建供应商的集群运行以下命令:
$ oc get cm kube-root-ca.crt -o=jsonpath={.data.ca\\.crt}- 复制输出的证书。
- 在 Migration Toolkit for Virtualization (MTV) web 控制台中,创建一个供应商并选择 OpenShift Virtualization。
将证书粘贴到 CA 证书 字段中,如下例所示:
-----BEGIN CERTIFICATE----- <CA_certificate_content> -----END CERTIFICATE-----
12.6.2. 创建用于 MTV 供应商的长期服务帐户和令牌 复制链接链接已复制到粘贴板!
当您在 Migration Toolkit for Virtualization (MTV) web 控制台中注册 OpenShift Virtualization 供应商时,您必须提供允许 MTV 与集群交互的凭证。创建长期服务帐户和集群角色绑定可让 MTV 持久权限在迁移期间读取和创建虚拟机资源。
流程
创建集群角色,如下例所示:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: live-migration-role rules: - apiGroups: - forklift.konveyor.io resources: - '*' verbs: - get - list - watch - apiGroups: - "" resources: - secrets - namespaces - configmaps - persistentvolumes - persistentvolumeclaims verbs: - get - list - watch - create - update - patch - delete - apiGroups: - k8s.cni.cncf.io resources: - network-attachment-definitions verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - list - watch - apiGroups: - kubevirt.io resources: - virtualmachines - virtualmachines/finalizers - virtualmachineinstancemigrations verbs: - get - list - watch - create - update - patch - delete - apiGroups: - kubevirt.io resources: - kubevirts - virtualmachineinstances verbs: - get - list - watch - apiGroups: - cdi.kubevirt.io resources: - datavolumes - datavolumes/finalizers verbs: - get - list - watch - create - update - patch - delete - apiGroups: - apps resources: - deployments verbs: - get - list - watch - create - update - patch - delete - apiGroups: - instancetype.kubevirt.io resources: - virtualmachineclusterpreferences - virtualmachineclusterinstancetypes verbs: - get - list - watch - apiGroups: - instancetype.kubevirt.io resources: - virtualmachinepreferences - virtualmachineinstancetypes verbs: - get - list - watch - create - update - patch - delete运行以下命令来创建集群角色:
$ oc create -f <filename>.yaml运行以下命令来创建服务帐户:
$ oc create serviceaccount <service_account_name> -n <service_account_namespace>运行以下命令,创建将服务帐户链接到集群角色的集群角色绑定:
$ oc create clusterrolebinding <service_account_name> --clusterrole=<cluster_role_name> --serviceaccount=<service_account_namespace>:<service_account_name>通过将以下清单保存为 YAML 文件来创建 secret 来保存令牌:
apiVersion: v1 kind: Secret metadata: name: <name_of_secret> namespace: <namespace_for_service_account> annotations: kubernetes.io/service-account.name: <service_account_name> type: kubernetes.io/service-account-token运行以下命令来应用清单:
$ oc apply -f <filename>.yaml填充 secret 后,运行以下命令来获取服务帐户 bearer 令牌:
$ TOKEN_BASE64=$(oc get secret "<name_of_secret>" -n "<namespace_bound_to_service_account>" -o jsonpath='{.data.token}') TOKEN=$(echo "$TOKEN_BASE64" | base64 --decode) echo "$TOKEN"- 复制输出的令牌。
- 在 Migration Toolkit for Virtualization (MTV) web 控制台中,当您创建供应商并选择 OpenShift Virtualization 时,将令牌粘贴到 Service account bearer token 字段中。