$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
容器化数据导入器 (CDI) 需要临时空间(临时存储)才能完成某些操作,例如导入和上传虚拟机镜像。在此过程中,CDI 预配的临时空间 PVC 等于支持目标数据卷 (DV) 的 PVC 的大小。操作完成后或中止后,临时空间 PVC 将被删除。
您可以在HyperConverged
自定义资源的spec.scratchSpaceStorageClass
字段中定义用于绑定临时空间PVC的存储类。
如果定义的存储类与集群中的存储类不匹配,则使用为集群定义的默认存储类。如果集群中没有定义默认存储类,则使用用于预配原始DV或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* |
✓ 支持的操作
□ 不支持的操作
* 需要临时空间
** 如果需要自定义证书颁发机构,则需要临时空间