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 过期,这会导致供应商失败。

流程

  1. 针对您要为其创建供应商的集群运行以下命令:

    $ oc get cm kube-root-ca.crt -o=jsonpath={.data.ca\\.crt}
    Copy to Clipboard Toggle word wrap
  2. 复制输出的证书。
  3. 在 Migration Toolkit for Virtualization (MTV) web 控制台中,创建一个供应商并选择 OpenShift Virtualization
  4. 将证书粘贴到 CA 证书 字段中,如下例所示:

    -----BEGIN CERTIFICATE-----
    <CA_certificate_content>
    -----END CERTIFICATE-----
    Copy to Clipboard Toggle word wrap

当您在 Migration Toolkit for Virtualization (MTV) web 控制台中注册 OpenShift Virtualization 供应商时,您必须提供允许 MTV 与集群交互的凭证。创建长期服务帐户和集群角色绑定可让 MTV 持久权限在迁移期间读取和创建虚拟机资源。

流程

  1. 创建集群角色,如下例所示:

    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
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来创建集群角色:

    $ oc create -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令来创建服务帐户:

    $ oc create serviceaccount <service_account_name> -n <service_account_namespace>
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,创建将服务帐户链接到集群角色的集群角色绑定:

    $ oc create clusterrolebinding <service_account_name> --clusterrole=<cluster_role_name> --serviceaccount=<service_account_namespace>:<service_account_name>
    Copy to Clipboard Toggle word wrap
  5. 通过将以下清单保存为 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
    Copy to Clipboard Toggle word wrap
  6. 运行以下命令来应用清单:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  7. 填充 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"
    Copy to Clipboard Toggle word wrap
  8. 复制输出的令牌。
  9. 在 Migration Toolkit for Virtualization (MTV) web 控制台中,当您创建供应商并选择 OpenShift Virtualization 时,将令牌粘贴到 Service account bearer token 字段中。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat