8.11. 使用虚拟可信平台模块设备
通过编辑 VirtualMachine
(VM)或 VirtualMachineInstance
(VMI)清单,将虚拟 Trusted Platform 模块(vTPM)设备添加到新的或现有虚拟机中。
在 OpenShift Virtualization 4.18 及更新版本中,您可以导出附加了 vTPM 设备的虚拟机 (VM),创建这些虚拟机的快照,以及从这些快照中恢复虚拟机。但是,不支持克隆附加了 vTPM 设备的虚拟机,也不支持使用其快照创建一个新的虚拟机。
8.11.1. 关于 vTPM 设备 复制链接链接已复制到粘贴板!
虚拟可信平台模块(vTPM)设备功能,如物理信任平台模块(TPM)硬件芯片。您可以将 vTPM 设备与任何操作系统一起使用,但 Windows 11 需要存在 TPM 芯片用来安装或引导的 TPM 芯片。vTPM 设备允许从 Windows 11 镜像创建的虚拟机在没有物理 TPM 芯片的情况下正常工作。
OpenShift Virtualization 支持为虚拟机使用持久性卷声明 (PVC) 来持久保留 vTPM 设备状态。如果没有为这个 PVC 指定存储类,OpenShift Virtualization 将默认存储类用于虚拟化工作负载。如果没有设置虚拟化工作负载的默认存储类,OpenShift Virtualization 会将默认存储类用于集群。
为虚拟化工作负载标记为 default 的存储类会将注解 storageclass.kubevirt.io/is-default-virt-class
设置为 "true"。您可以运行以下命令来找到这个存储类:
oc get sc -o jsonpath='{range .items[?(.metadata.annotations.storageclass\.kubevirt\.io/is-default-virt-class=="true")]}{.metadata.name}{"\n"}{end}'
$ oc get sc -o jsonpath='{range .items[?(.metadata.annotations.storageclass\.kubevirt\.io/is-default-virt-class=="true")]}{.metadata.name}{"\n"}{end}'
同样,集群的默认存储类会将注解 storageclass.kubernetes.io/is-default-class
设置为 "true"。要找到这个存储类,请运行以下命令:
oc get sc -o jsonpath='{range .items[?(.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")]}{.metadata.name}{"\n"}{end}'
$ oc get sc -o jsonpath='{range .items[?(.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")]}{.metadata.name}{"\n"}{end}'
为确保一致的行为,请分别配置一个存储类作为虚拟化工作负载和集群的默认值。
建议您通过在 HyperConverged
自定义资源(CR)中设置 vmStateStorageClass
属性来显式指定存储类:
如果没有启用 vTPM,则虚拟机无法识别 TPM 设备,即使节点有一个。
8.11.2. 将 vTPM 设备添加到虚拟机 复制链接链接已复制到粘贴板!
将虚拟 Trusted Platform 模块(vTPM)设备添加到虚拟机(VM)可让您从 Windows 11 镜像创建的虚拟机,而无需物理 TPM 设备。vTPM 设备还存储该虚拟机的 secret。
先决条件
-
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令以更新虚拟机配置:
oc edit vm <vm_name> -n <namespace>
$ oc edit vm <vm_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑虚拟机规格以添加 vTPM 设备。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 若要应用您的更改,请保存并退出编辑器。
- 可选:如果编辑了正在运行的虚拟机,您必须重启它才能使更改生效。