第 9 章 虚拟机模板
9.1. 创建虚拟机模板
9.1.1. 关于虚拟机模板
Virtualization 页面中的 Templates 选项卡中列出了预先配置的红帽虚拟机模板。这些模板适用于 Red Hat Enterprise Linux、Fedora、微软 Windows 10 和 Microsoft Windows Servers 的不同版本。每个红帽虚拟机模板都预先配置了操作系统镜像、操作系统的默认设置、类型(CPU 和内存)以及工作负载类型(server)。
Templates 标签显示四个类型的虚拟机模板:
- 红帽支持的模板完全被红帽模板。
- 用户支持的模板 红帽支持的 模板,但由用户克隆并创建。
- 红帽提供的模板,红帽会提供有限的支持。
- 用户提供的模板是由 红帽提供的,但由用户克隆和创建的模板。
在 Templates 选项卡中,您无法编辑或删除红帽支持的或红帽提供的模板。您只能编辑或删除用户创建的自定义虚拟机模板。
使用红帽模板非常方便,因为模板已预先配置。当您选择一个红帽模板来创建自定义模板时,Create Virtual Machine Template 向导会在之前没有添加引导源时提示您添加引导源。然后,您可以保存自定义模板或继续自定义它并保存它。
您还可以直接选择 Create Virtual Machine Template 向导并创建自定义虚拟机模板。向导提示您提供有关操作系统、类型、工作负载类型和其他设置的配置详情。您可以添加引导源,并继续自定义模板并保存它。
9.1.2. 关于虚拟机和引导源
虚拟机由虚拟机定义以及由数据卷支持的一个或多个磁盘组成。虚拟机模板允许您使用预定义的虚拟机规格创建虚拟机。
每个虚拟机模板都需要一个引导源,它是一个完全配置的虚拟机磁盘镜像,包括配置的驱动程序。每个虚拟机模板包含一个虚拟机定义,其中包含指向引导源的指针。每个引导源都有一个预定义的名称和命名空间。对于某些操作系统,会自动提供一个引导源。如果没有提供,管理员必须准备自定义引导源。
提供的引导源会自动更新至操作系统的最新版本。对于自动更新的引导源,持久性卷声明(PVC)使用集群的默认存储类创建。如果在配置后选择了不同的默认存储类,您必须删除使用之前的默认存储类配置的集群命名空间中的现有数据卷。
要使用引导源功能,请安装 OpenShift Virtualization 的最新版本。命名空间 openshift-virtualization-os-images
启用该功能,并安装 OpenShift Virtualization Operator。安装引导源功能后,您可以创建引导源,将它们附加到模板,并从模板创建虚拟机。
使用通过上传本地文件、克隆现有 PVC、从 registry 或 URL 导入的持久性卷声明(PVC)定义引导源。使用 web 控制台将引导源附加到虚拟机模板。在启动源附加到虚拟机模板后,您可从模板创建任意数量的已完全配置的可随时使用虚拟机。
9.1.3. 为虚拟机模板添加引导源
对于您要用于创建虚拟机或自定义模板的任何虚拟机模板,可以配置引导源。当使用引导源配置虚拟机模板时,会在 Templates 选项卡中被标记为 Available。在向模板中添加引导源后,您可以使用该模板创建新虚拟机。
在 web 控制台中选择和添加引导源有四个方法:
- 上传本地文件(创建 PVC)
- 通过 URL 导入(创建 PVC)
- 克隆现有的 PVC(创建 PVC)
- 通过 Registry 导入(创建 PVC)
先决条件
-
要添加引导源,您必须以具有
os-images.kubevirt.io:edit
RBAC 角色或管理员的用户身份登录。您不需要特殊权限才能从附加了引导源的模板创建虚拟机。 - 要上传本地文件,操作系统镜像文件必须存在于本地机器中。
- 要通过 URL 导入,您需要访问带操作系统镜像的 web 服务器。例如:带有镜像的 Red Hat Enterprise Linux 网页。
- 要克隆现有的 PVC,需要使用 PVC 访问项目。
- 要通过 registry 导入,需要访问容器 registry。
流程
-
在 OpenShift Virtualization 控制台中,从侧边菜单中点击 Workloads
Virtualization。 - 点 Templates 选项卡。
- 找到您要配置引导源的虚拟机模板并点击 Add source。
- 在 Add boot source to template 窗口中,点 Select boot source,选择创建持久性卷声明(PVC)的方法: Upload local file、Import via URL、Clone existing PVC 或 Import via Registry。
- 可选:点 This is a CD-ROM boot source 来挂载 CD-ROM,并使用它将操作系统安装到空磁盘。OpenShift Virtualization 会自动创建并挂载额外的空磁盘。如果不需要额外磁盘,您可以在创建虚拟机时将其删除。
为 持久性卷声明大小 输入一个值,以指定适合未压缩镜像的 PVC 大小,以及任何需要的额外空间。
- 可选:输入 Source 供应商 名称以将名称与此模板关联。
可选 :高级存储设置:点 Storage class 并选择用于创建磁盘的存储类。通常,这个存储类是创建供所有 PVC 使用的默认存储类。
注意提供的引导源会自动更新至操作系统的最新版本。对于自动更新的引导源,持久性卷声明(PVC)使用集群的默认存储类创建。如果在配置后选择了不同的默认存储类,您必须删除使用之前的默认存储类配置的集群命名空间中的现有数据卷。
可选:高级存储设置:点 Access 模式,并为持久性卷选择访问模式:
- 单用户(RWO) 将卷由单一节点以读写模式挂载。
- 共享访问(RWX) 将卷挂载为许多节点以读写模式。
- 只读(ROX) 将卷挂载为多个节点只读。
- 可选:高级存储设置:如果您需要选择 Block 而不是默认的值 Filesystem,点 Volume mode。OpenShift Virtualization 可以静态置备原始块卷。这些卷没有文件系统。对于可以直接写入磁盘或者实现其自己的存储服务的应用程序来说,使用它可以获得性能优势。
选择保存引导源的适当方法:
- 如果您上传一个本地文件,请点击 Save and upload。
- 如果从 URL 或 registry 中导入内容,点 Save and import。
- 如果克隆现有的 PVC,点 Save and clone。
Templates 选项卡中列出了带有引导源的自定义虚拟机模板,您可以使用此模板创建虚拟机。
9.1.3.1. 用于添加引导源的虚拟机模板字段
下表描述了在 模板窗口中添加引导源的字段。当您点击 Templates 选项卡中的虚拟机模板的 Add Source 时会显示这个窗口。
名称 | 参数 | 描述 |
---|---|---|
引导源类型 | 上传本地文件(创建 PVC) | 从本地设备上传文件。支持的文件类型包括 gz、xz、tar 和 qcow2。 |
通过 URL 导入(创建 PVC) | 从 HTTP 或 HTTPS 端点提供的镜像导入内容。从镜像下载的网页获取下载链接 URL,并在 通过 URL 导入(创建 PVC) 字段中输入该 URL 链接。示例:对于 Red Hat Enterprise Linux 镜像,登录到红帽客户门户网站,访问进行下载页面,并复制 KVM 客户机镜像的下载链接 URL。 | |
克隆现有的 PVC(创建 PVC) | 使用集群中已可用的 PVC 并克隆它。 | |
通过 Registry 导入(创建 PVC) | 指定位于 registry 中并可从集群访问的可引导操作系统容器。示例: kubevirt/cirros-registry-dis-demo。 | |
源供应商 | 可选字段。添加有关模板源的描述性文本,或者创建模板的用户名称。例如:Red Hat。 | |
高级 | Storage class | 用于创建磁盘的存储类。 |
访问模式 |
持久性卷访问模式。支持的访问模式有: 单用户(RWO)、 共享访问(RWX) 和 只读(ROX)。如果选择了 Single User(RWO),则该磁盘可以被单一节点以读写模式挂载。如果选择了 Shared Access(RWX),则该磁盘可以被多个节点以读写模式挂载。 + 注意 对一些功能(如虚拟机在节点间实时迁移)需要共享访问(RWX)。 | |
卷模式 |
定义持久性卷是否使用格式化的文件系统或原始块状态。支持的模式是 Block 和 Filesystem。 |
9.1.4. 将虚拟机模板标记为热门
为更轻松地访问经常使用的虚拟机模板,您可以将这些模板标记为热门。
流程
-
在 OpenShift Virtualization 控制台中,从侧边菜单中点击 Workloads
Virtualization。 - 点 Templates 选项卡。
- 识别您要标记为热门的红帽模板。
- 点击 Options 菜单 并选择 Favorite 模板。在显示的模板列表中,这些模板会被移到更高的位置。
9.1.5. 根据供应商过滤虚拟机模板列表
在 Templates 选项卡中,您可以使用 Search by name 字段通过指定模板名称或标识标识模板来搜索虚拟机模板。您还可以根据供应商过滤模板,并只显示满足过滤条件的模板。
流程
-
在 OpenShift Virtualization 控制台中,从侧边菜单中点击 Workloads
Virtualization。 - 点 Templates 选项卡。
- 要过滤模板,点 Filter。
- 从列表中选择适当的复选框来过滤模板: 红帽支持的、用户支持的、红帽提供的 和 用户提供的。
9.1.6. 使用 web 控制台中的向导创建虚拟机模板
web 控制台具有 Create Virtual Machine Template 向导,指导您完成 General、Networking、Storage、Advanced 和 Review 步骤,以简化虚拟机模板的创建过程。所有必填字段均带有一个 *。在为所有所需字段都提供了值之前,Create Virtual Machine Template 向导会阻止进行到下一步。
向导会指导您创建一个自定义虚拟机模板,在其中可指定操作系统、引导源、类型和其他设置。
流程
-
在 OpenShift Virtualization 控制台中,从侧边菜单中点击 Workloads
Virtualization。 - 点 Templates 选项卡。
- 点 Create 并选择 Template with Wizard。
- 在 General 步骤中填写所有必填字段。
点击 Next 进入 Networking 步骤。默认会附加名为
nic0
的 NIC。- 可选:点 Add Network Interface 来创建额外 NIC。
- 可选:您可以通过点 Options 菜单 并选择 Delete 来删除任何或所有 NIC。从模板创建的虚拟机无需附加 NIC。可在创建虚拟机之后创建 NIC。
- 点 Next 进入 Storage 步骤。
点 Add Disk 添加磁盘,在 Add Disk 页中输入相关信息。
注意如果选择 Import via URL (creates PVC)、Import via Registry (creates PVC) 或 Container (ephemeral) 作为 Source,会创建一个
rootdisk
磁盘,并被添加到虚拟机作为 Bootable Disk。如果虚拟机上未附加任何磁盘,则从 PXE 源置备的虚拟机无需 Bootable Disk。如有一个或多个磁盘附加到虚拟机,您必须将其中一个选为 Bootable Disk。
空白磁盘、没有有效引导源的 PVC 磁盘以及 cloudinitdisk 不能用作引导源。
可选:点击 Advanced 来配置 cloud-init 和 SSH 访问。
注意使用 cloud-init 或向导中的自定义脚本,静态注入 SSH 密钥。这使您可以安全、远程管理虚拟机以及管理和传输信息。强烈建议您使用这个步骤来保护您的虚拟机。
- 点 Review 来查看并确认您的设置。
- 点 Create Virtual Machine 模板。
- 点 See virtual machine template details 查看有关虚拟机模板的详情。
模板也会在 Templates 选项卡中列出。
9.1.7. 虚拟机模板向导字段
下表描述了 Create Virtual Machine Template 向导中的 General、Networking、Storage 和 Advanced 步骤的字段。
9.1.7.1. 虚拟机模板向导字段
名称 | 参数 | 描述 |
---|---|---|
Template | 从中创建虚拟机的模板。选择一个模板将自动填写其他字段。 | |
名称 |
名称可包含小写字母 ( | |
模板供应商 | 为集群创建模板的用户名称或用于标识此模板的任何有意义的名称。 | |
模板支持 | 没有额外的支持 | 此模板在集群中没有额外的支持。 |
由模板供应商支持 | 此模板由模板供应商支持。 | |
描述 | 可选的描述字段。 | |
操作系统 | 为虚拟机选择的操作系统。选择操作系统会自动选择那个操作系统的默认 Flavor 和 Workload 类型。 | |
引导源 | 通过 URL 导入(创建 PVC) | 从 HTTP 或 HTTPS 端点提供的镜像导入内容。示例:包含操作系统镜像的网页中的 URL 链接。 |
克隆现有的 PVC(创建 PVC) | 选择集群中可用的现有持久性卷声明并克隆它。 | |
通过 Registry 导入(创建 PVC) |
从可通过集群访问的注册表中的可启动操作系统容器置备虚拟机。示例: | |
PXE(网络引导 - 添加网络接口) | 从网络的服务器引导操作系统。需要一个 PXE 可引导网络附加定义。 | |
持久性卷声明项目 | 用于克隆 PVC 的项目名称。 | |
持久性卷声明名称 | 如果您要克隆现有的 PVC,则应用于此虚拟机模板的 PVC 名称。 | |
将它作为光盘引导源挂载 | CD-ROM 需要额外的磁盘来安装操作系统。选择添加磁盘的选择框并稍后进行自定义。 | |
Flavor | tiny、small、Medium、Large、Custom | 根据与该模板关联的操作系统,在虚拟机模板中预设具有预定义值的 CPU 和内存量。
如果选择了默认模板,您可以使用自定义值覆盖模板中的 |
工作负载类型 注意 如果您选择了不正确的 Workload Type,则可能会出现性能或资源利用率问题(如缓慢的 UI)。 | Desktop | 用于桌面的虚拟机配置。适用于小型工作环境。建议与 Web 控制台搭配使用。 |
Server | 在性能和广泛的服务器工作负载兼容性方面具有最佳平衡。 | |
高性能 | 针对高性能负载进行了优化的虚拟机配置。 |
9.1.7.2. 网络字段
名称 | 描述 |
---|---|
名称 | 网络接口控制器的名称。 |
model | 指明网络接口控制器的型号。支持的值有 e1000e 和 virtio。 |
网络 | 可用网络附加定义的列表。 |
类型 |
可用绑定方法列表。对于默认的 pod 网络, |
MAC 地址 | 网络接口控制器的 MAC 地址。如果没有指定 MAC 地址,则会自动分配一个。 |
9.1.7.3. 存储字段
名称 | 选择 | 描述 |
---|---|---|
Source | 空白(创建 PVC) | 创建一个空磁盘。 |
通过 URL 导入(创建 PVC) | 通过 URL(HTTP 或 HTTPS 端点)导入内容。 | |
使用现有的 PVC | 使用集群中已可用的 PVC。 | |
克隆现有的 PVC(创建 PVC) | 选择集群中可用的现有 PVC 并克隆它。 | |
通过 Registry 导入(创建 PVC) | 通过容器 registry 导入内容。 | |
容器(临时) | 从集群可以访问的 registry 中的容器上传内容。容器磁盘应只用于只读文件系统,如 CD-ROM 或临时虚拟机。 | |
名称 |
磁盘的名称。名称可包含小写字母 ( | |
Size | GiB 中磁盘的大小。 | |
类型 | 磁盘类型。示例:磁盘或光盘 | |
Interface | 磁盘设备的类型。支持的接口包括 virtIO、SATA 和 SCSI。 | |
Storage class | 用于创建磁盘的存储类。 | |
Advanced | 定义持久性卷是否使用格式化的文件系统或原始块状态。默认为 Filesystem。 | |
Advanced | 持久性卷访问模式。支持的访问模式有 Single User(RWO)、Shared Access(RWX) 和 Read Only(ROX)。 |
高级存储设置
以下高级存储设置可用于 空白、从 URL 导入 和 克隆现有的 PVC 磁盘。所有参数都是可选的。如果没有指定这些参数,系统将使用 kubevirt-storage-class-defaults
配置映射中的默认值。
名称 | 参数 | 描述 |
---|---|---|
卷模式 | Filesystem | 在基于文件系统的卷中保存虚拟磁盘。 |
Block |
直接将虚拟磁盘存储在块卷中。只有底层存储支持时才使用 | |
访问模式 | Single User (RWO) | 这个卷可以被一个单一的节点以 read/write 的形式挂载。 |
Shared Access (RWX) | 卷可以被多个节点以读写模式挂载。 注意 对于一些功能(如虚拟机在节点间实时迁移)需要这个权限。 | |
Read Only (ROX) | 卷可以被多个节点以只读形式挂载。 |
9.1.7.4. Cloud-init 字段
名称 | 描述 |
---|---|
Hostname | 为虚拟机设置特定主机名。 |
授权 SSH 密钥 | 复制到虚拟机上 ~/.ssh/authorized_keys 的用户公钥。 |
自定义脚本 | 将其他选项替换为您粘贴自定义 cloud-init 脚本的字段。 |