$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
容器化数据导入器 (CDI) 需要临时空间(临时存储)才能完成某些操作,例如导入和上传虚拟机映像。在此过程中,CDI 将预配一个大小等于目标数据卷 (DV) 的底层 PVC 的临时空间 PVC。操作完成后或中止后,将删除临时空间 PVC。
您可以在HyperConverged
自定义资源的spec.scratchSpaceStorageClass
字段中定义用于绑定临时空间PVC的存储类。
如果定义的存储类与集群中的存储类不匹配,则使用为集群定义的默认存储类。如果集群中未定义默认存储类,则使用用于预配原始 DV 或 PVC 的存储类。
无论底层数据卷的 PVC 使用哪种模式,CDI 都需要使用 |
如果没有存储类,CDI 将使用项目中符合映像大小要求的任何 PVC。如果没有符合这些要求的 PVC,则 CDI 导入 pod 将保持Pending状态,直到提供合适的 PVC 或超时函数终止 pod。
类型 | 原因 |
---|---|
注册表导入 |
CDI 必须将映像下载到临时空间并提取各层以查找映像文件。然后将映像文件传递给 QEMU-IMG 以转换为原始磁盘。 |
上传映像 |
QEMU-IMG 不接受来自 STDIN 的输入。而是将要上传的映像保存在临时空间中,然后才能将其传递给 QEMU-IMG 进行转换。 |
存档映像的 HTTP 导入 |
QEMU-IMG 不知道如何处理 CDI 支持的存档格式。而是将映像解压缩并保存到临时空间中,然后再将其传递给 QEMU-IMG。 |
经过身份验证的映像的 HTTP 导入 |
QEMU-IMG 对身份验证处理不充分。而是将映像保存到临时空间中并在将其传递给 QEMU-IMG 之前进行身份验证。 |
自定义证书的 HTTP 导入 |
QEMU-IMG 对 HTTPS 端点的自定义证书处理不充分。而是 CDI 将映像下载到临时空间中,然后再将文件传递给 QEMU-IMG。 |
您可以通过向HyperConverged
自定义资源 (CR) 添加spec.scratchSpaceStorageClass
字段来定义容器化数据导入器 (CDI) 在分配临时空间时使用的存储类。
安装 OpenShift CLI (oc
)。
通过运行以下命令编辑HyperConverged
CR
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
将spec.scratchSpaceStorageClass
字段添加到CR,并将值设置为集群中存在的存储类的名称
apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
spec:
scratchSpaceStorageClass: "<storage_class>" (1)
1 | 如果不指定存储类,CDI 将使用正在填充的持久卷声明的存储类。 |
保存并退出默认编辑器以更新HyperConverged
CR。
此矩阵显示了针对端点的各种内容类型的支持的 CDI 操作,以及这些操作中哪些需要临时空间。
内容类型 | HTTP | HTTPS | HTTP 基本身份验证 | 注册表 | 上传 |
---|---|---|---|---|---|
KubeVirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
✓ 支持的操作
□ 不支持的操作
* 需要临时空间
** 如果需要自定义证书颁发机构,则需要临时空间