3.2. 使用 CLI 工具
				您可使用 virtctl 命令行工具管理 OpenShift Virtualization 资源。
			
				您可以使用 libguestfs 命令行工具访问和修改虚拟机(VM)磁盘镜像。您可以使用 virtctl libguestfs 命令部署 libguestfs。
			
3.2.1. 安装 virtctl
					要在 Red Hat Enterprise Linux (RHEL) 9、Linux、Windows 和 MacOS 操作系统上安装 virtctl,您可以下载并安装 virtctl 二进制文件。
				
					要在 RHEL 8 上安装 virtctl,您可以启用 OpenShift Virtualization 仓库,然后安装 kubevirt-virtctl 软件包。
				
						您可以从 OpenShift Container Platform web 控制台下载适用于操作系统的 virtctl 二进制文件,然后安装它。
					
流程
- 
								在 web 控制台中进入到 Virtualization Overview 页面。 
- 
								点 Download virtctl 链接为您的操作系统下载 virtctl二进制文件。
- 安装 - virtctl:- 对于 RHEL 9 和其他 Linux 操作系统: - 解压缩存档文件: - tar -xvf <virtctl-version-distribution.arch>.tar.gz - $ tar -xvf <virtctl-version-distribution.arch>.tar.gz- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令使 - virtctl二进制可执行文件:- chmod +x <path/virtctl-file-name> - $ chmod +x <path/virtctl-file-name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 - virtctl二进制文件移到- PATH环境变量中的目录中。- 您可以运行以下命令来检查您的路径: - echo $PATH - $ echo $PATH- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 设置 - KUBECONFIG环境变量:- export KUBECONFIG=/home/<user>/clusters/current/auth/kubeconfig - $ export KUBECONFIG=/home/<user>/clusters/current/auth/kubeconfig- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 对于 Windows: - 解压缩存档文件。
- 
												进入解压的目录中,双击 virtctl可执行文件来安装客户端。
- 将 - virtctl二进制文件移到- PATH环境变量中的目录中。- 您可以运行以下命令来检查您的路径: - path - C:\> path- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- macOS: - 解压缩存档文件。
- 将 - virtctl二进制文件移到- PATH环境变量中的目录中。- 您可以运行以下命令来检查您的路径: - echo $PATH - echo $PATH- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
 
3.2.1.2. 在 RHEL 8 上安装 virtctl RPM
						您可以通过启用 OpenShift Virtualization 仓库并安装 kubevirt-virtctl 软件包,在 Red Hat Enterprise Linux (RHEL) 8 上安装 virtctl RPM 软件包。
					
先决条件
- 集群中的每个主机都必须通过 Red Hat Subscription Manager (RHSM) 注册,并具有有效的 OpenShift Container Platform 订阅。
流程
- 使用 - subscription-managerCLI 工具启用 OpenShift Virtualization 存储库,以运行以下命令:- subscription-manager repos --enable cnv-4.16-for-rhel-8-x86_64-rpms - # subscription-manager repos --enable cnv-4.16-for-rhel-8-x86_64-rpms- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令安装 - kubevirt-virtctl软件包:- yum install kubevirt-virtctl - # yum install kubevirt-virtctl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
3.2.2. virtctl 命令
					virtctl 客户端是用于管理 OpenShift Virtualization 资源的命令行实用程序。
				
除非另有指定,否则虚拟机(VM)命令也适用于虚拟机实例(VMI)。
3.2.2.1. virtctl 信息命令
						您可使用 virtctl 信息命令查看 virtctl 客户端的信息。
					
| 命令 | 描述 | 
|---|---|
| 
										 | 
										查看  | 
| 
										 | 
										查看  | 
| 
										 | 查看特定命令的选项列表。 | 
| 
										 | 
										查看任何  | 
3.2.2.2. VM 信息命令
						您可使用 virtctl 查看有关虚拟机(VM)和虚拟机实例(VMI)的信息。
					
| 命令 | 描述 | 
|---|---|
| 
										 | 查看客户机机器上可用的文件系统。 | 
| 
										 | 查看客户机机器上操作系统的信息。 | 
| 
										 | 查看客户机机器上的登录用户。 | 
3.2.2.3. VM 清单创建命令
						您可使用 virtctl create 命令为虚拟机、实例类型和首选项创建清单。
					
| 命令 | 描述 | 
|---|---|
| 
 | 
										创建  | 
| 
										 | 创建虚拟机清单,指定虚拟机的名称。 | 
| 
										 | 创建使用现有集群范围实例类型的虚拟机清单。 | 
| 
										 | 创建使用现有命名空间的实例类型的虚拟机清单。 | 
| 
										 | 为集群范围的实例类型创建清单。 | 
| 
										 | 为命名空间实例类型创建清单。 | 
| 
										 | 为集群范围的虚拟机首选项创建清单,为首选项指定一个名称。 | 
| 
										 | 为命名空间虚拟机首选项创建清单。 | 
3.2.2.4. VM 管理命令
						您可使用 virtctl 虚拟机(VM)管理命令管理和迁移虚拟机(VM)和虚拟机实例(VMI)。
					
| 命令 | 描述 | 
|---|---|
| 
										 | 启动虚拟机。 | 
| 
										 | 以暂停状态启动虚拟机。这个选项可让您从 VNC 控制台中断引导过程。 | 
| 
										 | 停止虚拟机。 | 
| 
										 | 强制停止虚拟机。这个选项可能会导致数据不一致或数据丢失。 | 
| 
										 | 暂停虚拟机。机器状态保存在内存中。 | 
| 
										 | 取消暂停虚拟机。 | 
| 
										 | 迁移虚拟机。 | 
| 
										 | 取消虚拟机迁移。 | 
| 
										 | 重启虚拟机。 | 
3.2.2.5. VM 连接命令
						您可使用 virtctl connection 命令来公开端口并连接到虚拟机(VM)和虚拟机实例(VMI)。
					
| 命令 | 描述 | 
|---|---|
| 
										 | 连接到虚拟机的串行控制台。 | 
| 
										 | 创建转发虚拟机的指定端口的服务,并在节点的指定端口上公开服务。 
										示例: | 
| 
										 | 将文件从机器复制到虚拟机。此命令使用 SSH 密钥对的私钥。虚拟机必须使用公钥配置。 | 
| 
										 | 将文件从虚拟机复制到您的机器中。此命令使用 SSH 密钥对的私钥。虚拟机必须使用公钥配置。 | 
| 
										 | 与虚拟机打开 SSH 连接。此命令使用 SSH 密钥对的私钥。虚拟机必须使用公钥配置。 | 
| 
										 | 连接到虚拟机的 VNC 控制台。 
										已安装  | 
| 
										 | 显示端口号,并使用任何查看器通过 VNC 连接手动连接到 VMI。 | 
| 
										 | 如果该端口可用,则指定端口号用于在指定端口上运行代理。 如果没有指定端口号,代理会在随机端口上运行。 | 
3.2.2.6. VM 导出命令
						使用 virtctl vmexport 命令来创建、下载或删除从虚拟机、虚拟机快照或持久性卷声明 (PVC) 导出的卷。某些清单还包含标头 secret,它授予对端点的访问权限,以 OpenShift Virtualization 可以使用的格式导入磁盘镜像。
					
| 命令 | 描述 | 
|---|---|
| 
										 | 
										创建一个  
 | 
| 
										 | 
										手动删除  | 
| 
										 | 
										下载在  
 可选: 
 | 
| 
										 | 
										创建一个  | 
| 
										 | 为一个现有的导出获取清单。清单不包括标头 secret。 | 
| 
										 | 为虚拟机 example 创建一个虚拟机导出,并获取清单。清单不包括标头 secret。 | 
| 
										 | 为虚拟机快照 example 创建一个虚拟机导出,并获取清单。清单不包括标头 secret。 | 
| 
										 | 为一个现有的导出获取清单。清单包括标头 secret。 | 
| 
										 | 以 json 格式检索现有导出的清单。清单不包括标头 secret。 | 
| 
										 | 为一个现有的导出获取清单。清单包括标头 secret,并将其写入指定的文件中。 | 
3.2.2.7. VM 内存转储命令
						您可使用 virtctl memory-dump 命令在 PVC 上输出虚拟机 (VM) 内存转储。您可以指定现有的 PVC,或使用 --create-claim 标志来创建新 PVC。
					
先决条件
- 
								PVC 卷模式必须是 FileSystem。
- PVC 必须足够大以保存内存转储。 - 计算 PVC 大小的公式为 - (VMMemorySize + 100Mi)* FileSystemOverhead,其中- 100Mi是内存转储开销。
- 您必须运行以下命令来在 - HyperConverged自定义资源中启用热插功能:- oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "add", "path": "/spec/featureGates", \ "value": "HotplugVolumes"}]'- $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "add", "path": "/spec/featureGates", \ "value": "HotplugVolumes"}]'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
下载内存转储
							您必须使用 virtctl vmexport download 命令下载内存转储:
						
virtctl vmexport download <vmexport_name> --vm|pvc=<object_name> \ --volume=<volume_name> --output=<output_file>
$ virtctl vmexport download <vmexport_name> --vm|pvc=<object_name> \
  --volume=<volume_name> --output=<output_file>| 命令 | 描述 | 
|---|---|
| 
										 | 
										在 PVC 上保存虚拟机的内存转储。内存转储状态显示在  可选: 
 | 
| 
										 | 
										使用相同的 PVC 重新运行  这个命令覆盖以前的内存转储。 | 
| 
										 | 删除内存转储。 如果要更改目标 PVC,则必须手动删除内存转储。 
										这个命令会删除虚拟机和 PVC 之间的关联,以便在  | 
3.2.2.8. 热插和热拔命令
						您可使用 virtctl 从正在运行的虚拟机(VM)和虚拟机实例(VMI)中添加或删除资源。
					
| 命令 | 描述 | 
|---|---|
| 
										 | 热插数据卷或持久性卷声明 (PVC)。 可选: 
 | 
| 
										 | 热拔一个虚拟磁盘。 | 
| 
										 | 热插 Linux 网桥网络接口。 | 
| 
										 | 热拔 Linux 网桥网络接口。 | 
3.2.2.9. 镜像上传命令
						您可使用 virtctl image-upload 命令将虚拟机镜像上传到数据卷中。
					
| 命令 | 描述 | 
|---|---|
| 
										 | 将虚拟机镜像上传到已存在的数据卷中。 | 
| 
										 | 将虚拟机镜像上传到指定请求大小的新数据卷中。 | 
3.2.3. 使用 virtctl 部署 libguestfs
					您可以使用 virtctl guestfs 命令部署带有 libguestfs-tools 以及附加到它的持久性卷声明 (PVC) 的交互式容器。
				
流程
- 要部署一个带有 - libguestfs-tools的容器,挂载 PVC 并为其附加一个 shell,运行以下命令:- virtctl guestfs -n <namespace> <pvc_name> - $ virtctl guestfs -n <namespace> <pvc_name>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- PVC 名称是必需的参数。如果没有包括它,则会出现错误消息。
 
3.2.3.1. libguestfs 和 virtctl guestfs 命令
						libguestfs 工具可帮助您访问和修改虚拟机 (VM) 磁盘镜像。您可以使用 libguestfs 工具查看和编辑客户机中的文件、克隆和构建虚拟机,以及格式化和调整磁盘大小。
					
						您还可以使用 virtctl guestfs 命令及其子命令在 PVC 上修改、检查和调试虚拟机磁盘。要查看子命令的完整列表,请在命令行中输入 virt- 并按 Tab 键。例如:
					
| 命令 | 描述 | 
|---|---|
| 
										 | 在终端中以交互方式编辑文件。 | 
| 
										 | 将 ssh 密钥注入客户系统并创建登录。 | 
| 
										 | 查看虚拟机使用了多少磁盘空间。 | 
| 
										 | 通过创建包含完整列表的输出文件,查看虚拟客户机上安装的所有 RPM 的完整列表。 | 
| 
										 | 
										在终端中使用  | 
| 
										 | 封装要用作模板的虚拟机磁盘镜像。 | 
						默认情况下,virtctl guestfs 会创建一个会话,其中包含管理 VM 磁盘所需的一切内容。但是,该命令还支持几个标志选项来自定义其行为:
					
| 标记选项 | 描述 | 
|---|---|
| 
										 | 
										为  | 
| 
										带有  | 使用来自一个特定命名空间中的 PVC。 
										如果没有使用  
										如果没有包括  | 
| 
										 | 
										列出  
										您可以使用  | 
| 
										 | 
										代表  
										默认情况下, 
										如果集群没有任何  
										如果没有设置, | 
| 
										 | 
										显示  
										您还可以通过设置  | 
						这个命令还会检查 PVC 是否被另一个 pod 使用,如果被另外一个 pod 使用,则会一个错误信息。但是,libguestfs-tools 进程启动后,设置无法新的 pod 会使用相同的 PVC。在启动会访问同一 PVC 的虚拟机前,您必须先验证没有活跃的 virtctl guestfs pod。
					
							virtctl guestfs 命令只能接受一个 PVC 被附加到不活跃的 pod。
						
3.2.4. 使用 Ansible
要使用 OpenShift Virtualization 的 Ansible 集合,请参阅 Red Hat Ansible Automation Hub (Red Hat Hybrid Cloud Console)。