3.7. 已知问题


  • 您无法在单堆栈 IPv6 集群上运行 OpenShift Virtualization。(BZ#2193267)
  • 当您使用具有不同 SELinux 上下文的两个 pod 时,带有 ocs-storagecluster-cephfs 存储类的虚拟机无法迁移,虚拟机状态变为 Paused。这是因为两个 pod 会尝试同时访问共享 ReadWriteMany CephFS 卷。(BZ#2092271)

    • 作为临时解决方案,使用 ocs-storagecluster-ceph-rbd 存储类在使用 Red Hat Ceph Storage 的集群上实时迁移虚拟机。
  • 更新至 OpenShift Virtualization 4.10.5 会导致一些虚拟机(VM)处于实时迁移循环中。如果虚拟机清单中的 spec.volumes.containerDisk.path 字段设置为相对路径,会出现这种情况。

    • 作为临时解决方案,删除并重新创建 VM 清单,将 spec.volumes.containerDisk.path 字段的值设置为绝对路径。然后您可以更新 OpenShift Virtualization。
  • 如果单个节点包含超过 50 个镜像,pod 调度可能会在节点间进行平衡。这是因为节点上的镜像列表默认简写为 50。(BZ#1984442)

    • 作为临时解决方案,您可以通过编辑 KubeletConfig 对象,将 nodeStatusMaxImages 的值设置为 -1 来禁用镜像限值。
  • 如果您在一个集群中 hostpath 置备程序,而这个集群包括了其完全限定域名(FQDN)的长度超过 42 个字符的节点,则置备程序无法绑定 PVC。(BZ#2057157)

    错误信息示例

    E0222 17:52:54.088950       1 reflector.go:138] k8s.io/client-go/informers/factory.go:134: Failed to watch *v1beta1.CSIStorageCapacity: failed to list *v1beta1.CSIStorageCapacity: unable to parse requirement: values[0][csi.storage.k8s.io/managed-by]: Invalid value: "external-provisioner-<node_FQDN>": must be no more than 63 characters 1

    1
    虽然错误消息引用了最多 63 个字符,但它包括前缀为节点的 FQDN 的 external-provisioner- 字符串。
    • 作为临时解决方案,请运行以下命令在 hostpath 置备程序 CSI 驱动程序中禁用 storageCapacity 选项:

      $ oc patch csidriver kubevirt.io.hostpath-provisioner --type merge --patch '{"spec": {"storageCapacity": false}}'
  • 如果您的 OpenShift Container Platform 集群使用 OVN-Kubernetes 作为默认 Container Network Interface(CNI)供应商,则无法将 Linux 网桥或绑定设备附加到主机的默认接口,因为 OVN-Kubernetes 的主机网络拓扑发生了变化。(BZ#1885605)

    • 作为临时解决方案,您可以使用连接到主机的二级网络接口,或切换到 OpenShift SDN 默认 CNI 供应商。
  • 运行无法实时迁移的虚拟机可能会阻止 OpenShift Container Platform 集群升级。这包括使用 hostpath-provisioner 存储或 SR-IOV 网络接口的虚拟机。

    • 作为临时解决方案,您可以重新配置虚拟机以便在集群升级过程中关闭它们。在虚拟机配置文件的 spec 部分中:

      1. 修改 evictionStrategyrunStrategy 字段。

        1. 删除 evictionStrategy: LiveMigrate 字段。有关如何配置驱除策略的更多信息,请参阅配置虚拟机驱除策略
        2. runStrategy 字段设置为 Always
      2. 运行以下命令来设置默认 CPU 型号:

        注意

        您必须在启动支持实时迁移的虚拟机前进行此更改。

        $ oc annotate --overwrite -n openshift-cnv hyperconverged kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[
          {
              "op": "add",
              "path": "/spec/configuration/cpuModel",
              "value": "<cpu_model>" 1
          }
        ]'
        1
        <cpu_model> 替换为实际 CPU 型号值。要确定此值,您可以为所有节点运行 oc describe node <node> 并查看 cpu-model-<name> 标签。选择所有节点上出现的 CPU 型号。
  • 如果您使用 Red Hat Ceph Storage 或 Red Hat OpenShift Data Foundation Storage,则一次克隆超过 100 个虚拟机可能会失败。(BZ#1989527)

    • 作为临时解决方案,您可以通过在存储配置集清单中设置 spec.cloneStrategy: copy 来执行主机辅助副本。例如:

      apiVersion: cdi.kubevirt.io/v1beta1
      kind: StorageProfile
      metadata:
        name: <provisioner_class>
      #   ...
      spec:
        claimPropertySets:
        - accessModes:
          - ReadWriteOnce
          volumeMode: Filesystem
        cloneStrategy: copy 1
      status:
        provisioner: <provisioner>
        storageClass: <provisioner_class>
      1
      默认克隆方法设置为 copy(复制)
  • 在某些情况下,多个虚拟机可以以读写模式挂载相同的 PVC,这可能会导致数据崩溃。(BZ#1992753)

    • 作为临时解决方案,请避免在使用多个虚拟机的读写模式中使用单个 PVC。
  • Pod Disruption Budget(PDB)可防止 pod 意外中断。如果 PDB 检测到 pod 中断,则 openshift-monitoring 会每 60 分钟发送 PodDisruptionBudgetAtLimit 警报,以使用 LiveMigrate 驱除策略。(BZ#2026733)

  • 在大型集群中,OpenShift Virtualization MAC 池管理器可能需要很长时间才能引导,OpenShift Virtualization 可能未就绪。(BZ#2035344)

    • 作为临时解决方案,如果您不需要 MAC 池功能,请运行以下命令来禁用这个子组件:

      $ oc annotate --overwrite -n openshift-cnv hco kubevirt-hyperconverged 'networkaddonsconfigs.kubevirt.io/jsonpatch=[
        {
          "op": "replace"
          "path": "/spec/kubeMacPool"
          "value": null
        }
       ]'
  • OpenShift Virtualization 将 pod 使用的服务帐户令牌链接到该特定 pod。OpenShift Virtualization 通过创建包含令牌的磁盘镜像来实施服务帐户卷。如果您迁移虚拟机,则服务帐户卷无效。(BZ#2037611)

    • 作为临时解决方案,使用用户帐户而不是服务帐户,因为用户帐户令牌没有绑定到特定 pod。
  • 如果虚拟机在关闭过程中崩溃或挂起,新的关闭请求不会停止虚拟机。(BZ#2040766)
  • 如果您将 HyperConverged 自定义资源(CR)配置为在安装驱动程序前启用介质设备,则不会启用介质设备。更新可能会触发此问题。例如,如果在 daemonset 之前更新 virt-handler,它安装 NVIDIA 驱动程序,则节点无法提供虚拟机 GPU。(BZ#2046298)

    • 作为临时解决方案:

      1. HyperConverged CR 中删除 mediatedDevicesConfigurationpermittedHostDevices
      2. 使用您要使用的配置更新 mediatedDevicesConfigurationpermittedHostDevices 小节。
  • VM 向导中的 YAML 示例被硬编码,并不总是包含最新的上游更改。(BZ#2055492)
  • 如果您使用 csi-clone 克隆策略克隆超过 100 个虚拟机,则 Ceph CSI 可能无法清除克隆。手动删除克隆也会失败。(BZ#2055595)

    • 作为临时解决方案,您可以重启 ceph-mgr 来清除虚拟机克隆。
  • 未授权用户无法在虚拟机网络接口选项卡上使用添加网络接口按钮。(BZ#2056420)

    • 作为临时解决方案,未授权用户可以在创建虚拟机时使用 VM 向导时添加额外的网络接口。
  • 非特权用户因为 RBAC 规则而无法向虚拟机添加磁盘。(BZ#2056421)

    • 作为临时解决方案,请手动添加 RBAC 规则来允许特定用户添加磁盘。
  • web 控制台不显示部署到自定义命名空间的虚拟机模板。仅部署到 default 命名空间的模板才会显示在 web 控制台中。(BZ#2054650)

    • 作为临时解决方案,请避免将模板部署到自定义命名空间中。
  • 在单节点 OpenShift(SNO)集群中,如果 VMI 的 spec.evictionStrategy 字段设置为 LiveMigrate,则更新集群会失败。要使实时迁移成功,集群必须有多个 worker 节点。(BZ#2073880)

    • 有两个临时解决方案:

      • 从 VM 声明中删除 spec.evictionStrategy 字段。
      • 在更新 OpenShift Container Platform 前手动停止虚拟机。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.