8.8. 准备 CDI 涂销空间
8.8.1. 关于涂销空间
Containerized Data Importer (CDI) 需要涂销空间(临时存储)来完成一些操作,如导入和上传虚拟机镜像。在此过程中,CDI 会提供一个与支持目标数据卷(DV)的 PVC 大小相等的涂销空间 PVC。该涂销空间 PVC 将在操作完成或中止后删除。
您可以在 HyperConverged
自定义资源的 spec.scratchSpaceStorageClass
字段中定义绑定涂销空间 PVC 的存储类。
如果定义的存储类与集群中的存储类不匹配,则会使用为集群定义的默认存储类。如果没有在集群中定义默认存储类,则会使用置备原始 DV 或 PVC 的存储类。
CDI 需要通过 file
卷模式来请求涂销空间,与支持原始数据卷的 PVC 无关。如果 block
卷模式支持原始 PVC,则您必须定义一个能够置备 file
卷模式 PVC 的 StorageClass。
手动调配
如果没有存储类,CDI 将使用项目中与镜像的大小要求匹配的任何 PVC。如果没有与这些要求匹配的 PVC,则 CDI 导入 Pod 将保持 Pending 状态,直至有适当的 PVC 可用或直至超时功能关闭 Pod。
8.8.2. 需要涂销空间的 CDI 操作
类型 | 原因 |
---|---|
registry 导入 | 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。 |
8.8.3. 定义存储类
您可以通过将 spec.scratchSpaceStorageClass
字段添加到 HyperConverged
自定义资源(CR)来定义 Containerized Data Importer(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。
8.8.4. CDI 支持的操作列表
此列表针对端点显示内容类型支持的 CDI 操作,以及哪些操作需要涂销空间(scratch space)。
内容类型 | HTTP | HTTPS | HTTP 基本身份验证 | Registry | 上传 |
---|---|---|---|---|---|
KubeVirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
✓ 支持的操作
□ 不支持的操作
* 需要涂销空间
** 如果需要自定义证书颁发机构,则需要涂销空间