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。
-
作为临时解决方案,删除并重新创建 VM 清单,将
如果单个节点包含超过 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
部分中:修改
evictionStrategy
和runStrategy
字段。-
删除
evictionStrategy: LiveMigrate 字段
。有关如何配置驱除策略的更多信息,请参阅配置虚拟机驱除策略。 -
将
runStrategy
字段设置为Always
。
-
删除
运行以下命令来设置默认 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)作为临时解决方案:
-
从
HyperConverged
CR 中删除mediatedDevicesConfiguration
和permittedHostDevices
。 -
使用您要使用的配置更新
mediatedDevicesConfiguration
和permittedHostDevices
小节。
-
从
- 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 前手动停止虚拟机。
-
从 VM 声明中删除