7.5. 配置对虚拟机的 SSH 访问
您可以使用以下方法配置对虚拟机的 SSH 访问:
- 您可以创建一个 SSH 密钥对,将公钥添加到虚拟机,并使用私钥运行 - virtctl ssh命令连接到虚拟机。- 您可以在运行时将公共 SSH 密钥添加到 Red Hat Enterprise Linux (RHEL) 9 虚拟机,或第一次引导到使用 cloud-init 数据源配置的客户机操作系统的虚拟机。 
- 您可以将 - virtctl port-foward命令添加到- .ssh/config文件中,并使用 OpenSSH 连接到虚拟机。
- 您可以创建一个服务,将服务与虚拟机关联,并连接到该服务公开的 IP 地址和端口。 
- 您可以配置二级网络,将虚拟机(VM)附加到二级网络接口,并连接到 DHCP 分配的 IP 地址。 
7.5.1. 访问配置注意事项
根据流量负载和客户端要求,配置对虚拟机(VM)的访问的每个方法都有优点和限制。
服务为从集群外部访问的应用程序提供出色的性能,并推荐使用。
如果内部集群网络无法处理流量负载,您可以配置二级网络。
- virtctl ssh和- virtctl port-forwarding命令
- 易于配置。
- 建议对虚拟机进行故障排除。
- 
										推荐使用 Ansible 自动配置虚拟机的 virtctl port-forwarding。
- 动态公共 SSH 密钥可用于使用 Ansible 调配虚拟机。
- 因为 API 服务器的负担,不建议用于 Rsync 或 Remote Desktop Protocol 等高流量应用程序。
- API 服务器必须能够处理流量负载。
- 客户端必须能够访问 API 服务器。
- 客户端必须具有集群的访问凭证。
 
- 集群 IP 服务
- 内部集群网络必须能够处理流量负载。
- 客户端必须能够访问内部集群 IP 地址。
 
- 节点端口服务
- 内部集群网络必须能够处理流量负载。
- 客户端必须能够访问至少一个节点。
 
- 负载均衡器服务
- 必须配置负载均衡器。
- 每个节点必须能够处理一个或多个负载均衡器服务的流量负载。
 
- 二级网络
- 卓越的性能,因为流量不会通过内部集群网络。
- 允许灵活的网络拓扑方法。
- 客户机操作系统必须配置适当的安全性,因为虚拟机直接公开给二级网络。如果虚拟机被破坏,入侵者可能会获得对二级网络的访问权限。
 
7.5.2. 使用 virtctl ssh
					您可以将公共 SSH 密钥添加到虚拟机 (VM),并通过运行 virtctl ssh 命令连接到虚拟机。
				
这个方法易于配置。但是,不建议在有高流量负载的环境中使用,因为它会对 API 服务器造成负担。
7.5.2.1. 关于静态和动态 SSH 密钥管理
您可以在首次引导时或在运行时动态向虚拟机 (VM) 静态添加公共 SSH 密钥。
只有 Red Hat Enterprise Linux (RHEL) 9 支持动态密钥注入。
静态 SSH 密钥管理
您可以使用 cloud-init 数据源支持配置的客户机操作系统向虚拟机添加静态管理的 SSH 密钥。密钥会在第一次引导时添加到虚拟机 (VM) 中。
您可以使用以下方法之一添加密钥:
- 在使用 Web 控制台或命令行创建时,向单个虚拟机添加密钥。
- 使用 Web 控制台向项目添加密钥。之后,密钥会自动添加到您在这个项目中创建的虚拟机。
使用案例
- 作为虚拟机所有者,您可以使用单个密钥置备所有新创建的虚拟机。
动态 SSH 密钥管理
您可以为安装了 Red Hat Enterprise Linux (RHEL) 9 的虚拟机启用动态 SSH 密钥管理。之后,您可以在运行时更新密钥。密钥由 QEMU 客户机代理添加,该代理使用 Red Hat 引导源安装。
当禁用动态密钥管理时,虚拟机的默认密钥管理设置由用于虚拟机的镜像决定。
使用案例
- 
								授予或撤销对虚拟机的访问权限:作为集群管理员,您可以通过从应用到命名空间中的所有虚拟机的 Secret对象添加或删除单个用户的密钥来授予或撤销远程虚拟机访问。
- 用户访问:您可以将访问凭证添加到您创建和管理的所有虚拟机。
- Ansible 置备: - 作为操作团队成员,您可以创建一个单一 secret,其中包含用于 Ansible 置备的所有密钥。
- 作为虚拟机所有者,您可以创建虚拟机并附加用于 Ansible 置备的密钥。
 
- 密钥轮转: - 作为集群管理员,您可以轮转命名空间中虚拟机使用的 Ansible 置备程序密钥。
- 作为工作负载所有者,您可以轮转您管理的虚拟机的密钥。
 
7.5.2.2. 静态密钥管理
当使用 OpenShift Container Platform web 控制台或命令行创建虚拟机 (VM) 时,您可以添加静态管理的公共 SSH 密钥。当虚拟机第一次引导时,密钥会添加为 cloud-init 数据源。
在使用 Web 控制台创建虚拟机时,您还可以将公共 SSH 密钥添加到项目中。密钥保存为 secret,并自动添加到您创建的所有虚拟机中。
如果您在项目中添加 secret,然后删除虚拟机,则 secret 会被保留,因为它是一个命名空间资源。您必须手动删除 secret。
7.5.2.2.1. 从模板创建虚拟机时添加密钥
在使用 OpenShift Container Platform web 控制台创建虚拟机时,您可以添加静态管理的公共 SSH 密钥。密钥会在第一次引导时作为 cloud-init 数据源添加到虚拟机。这个方法不会影响 cloud-init 用户数据。
可选:您可以在项目中添加密钥。之后,此密钥会自动添加到您在项目中创建的虚拟机。
先决条件
- 
									您可以通过运行 ssh-keygen命令生成 SSH 密钥对。
流程
- 
									在 web 控制台中进入到 Virtualization Catalog。 
- 点模板标题。 - 客户机操作系统必须支持 cloud-init 数据源的配置。 
- 点 Customize VirtualMachine。
- 点击 Next。
- 点 Scripts 选项卡。
- 如果您还没有在项目中添加公共 SSH 密钥,点 Authorized SSH key 旁边的编辑图标,然后选择以下选项之一: - 使用现有 :从 secrets 列表中选择一个 secret。
- 添加新 : - 浏览到 SSH 密钥文件或在 key 字段中粘贴文件。
- 输入 secret 名称。
- 可选: 选择 Automatically apply this key to any new VirtualMachine you create in this project。
 
 
- 点击 Save。
- 点 Create VirtualMachine。 - VirtualMachine 详情页显示创建虚拟机的进度。 
验证
- 点 Configuration 选项卡上的 Scripts 选项卡。 - secret 名称显示在 Authorized SSH key 部分中。 
7.5.2.2.2. 使用 Web 控制台从实例类型创建虚拟机时添加密钥
您可以使用 OpenShift Container Platform web 控制台从实例类型创建虚拟机 (VM)。您还可以通过复制现有快照或克隆虚拟机,来使用 Web 控制台创建虚拟机。
您可以从可用可引导卷列表创建虚拟机。您可以在列表中添加基于 Linux 或 Windows 的卷。
在使用 OpenShift Container Platform web 控制台从实例类型创建虚拟机(VM)时,您可以添加静态管理的 SSH 密钥。密钥会在第一次引导时作为 cloud-init 数据源添加到虚拟机。这个方法不会影响 cloud-init 用户数据。
流程
- 在 Web 控制台中,进入到 Virtualization - Catalog。 - InstanceTypes 选项卡默认为打开。 
- 选择以下选项之一: - 从列表中选择合适的可引导卷。如果列表已被截断,请点 Show all 按钮来显示整个列表。 注意- 可引导的卷表仅列出 - openshift-virtualization-os-images命名空间中具有- instancetype.kubevirt.io/default-preference标签的卷。- 可选:点星号图标将可引导卷指定为热门卷。不足的可引导卷首先出现在卷列表中。
 
- 点 Add volume 上传新卷,或使用现有的持久性卷声明(PVC)、卷快照或 - containerDisk卷。点击 Save。- 集群中不可用的操作系统的徽标显示在列表的底部。您可以点 Add volume 链接为所需的操作系统添加卷。 - 另外,还有 创建 Windows 引导源快速启动的链接。如果您将鼠标悬停在 Select volume to boot from 行旁边的问号图标上,则同一链接会出现在弹出窗口中。 - 安装环境或环境断开连接后,从中引导的卷列表为空。在这种情况下,会显示三个操作系统徽标:Windows、RHEL 和 Linux。您可以点 Add volume 按钮添加新卷来满足您的要求。 
 
- 点实例类型标题,然后选择适合您的工作负载的资源大小。
- 可选:选择虚拟机详情,包括虚拟机的名称,适用于您要从其引导的卷: - 对于基于 Linux 的卷,请按照以下步骤配置 SSH: - 如果您还没有在项目中添加公共 SSH 密钥,点 VirtualMachine details 部分中的 Authorized SSH key 旁边的编辑图标。
- 选择以下选项之一: - 使用现有 :从 secrets 列表中选择一个 secret。
- Add new: 遵循以下步骤: - 浏览到公共 SSH 密钥文件,或在 key 字段中粘贴文件。
- 输入 secret 名称。
- 可选: 选择 Automatically apply this key to any new VirtualMachine you create in this project。
 
 
- 点击 Save。
 
- 对于 Windows 卷,请按照以下步骤配置 sysprep 选项: - 如果您还没有为 Windows 卷添加 sysprep 选项,请按照以下步骤执行: - 点 VirtualMachine 详情 部分中的 Sysprep 的编辑图标。
- 添加 Autoattend.xml 回答文件。
- 添加 Unattend.xml 回答文件。
- 点击 Save。
 
- 如果要将现有的 sysprep 选项用于 Windows 卷,请按照以下步骤执行: - 点 Attach existing sysprep。
- 输入现有 sysprep Unattend.xml 回答文件的名称。
- 点击 Save。
 
 
 
- 可选: 如果要创建 Windows 虚拟机,您可以挂载 Windows 驱动程序磁盘: - 点 Customize VirtualMachine 按钮。
- 在 VirtualMachine 详情页中,点 Storage。
- 选择 Mount Windows 驱动程序磁盘复选框。
 
- 可选:点 View YAML & CLI 查看 YAML 文件。点 CLI 查看 CLI 命令。您还可以下载或复制 YAML 文件内容或 CLI 命令。
- 点 Create VirtualMachine。
创建虚拟机后,您可以在 VirtualMachine 详情页中监控状态。
7.5.2.2.3. 使用命令行在创建虚拟机时添加密钥
当使用命令行创建虚拟机(VM)时,您可以添加静态管理的公共 SSH 密钥。密钥会在第一次引导时添加到虚拟机。
密钥作为 cloud-init 数据源添加到虚拟机中。此方法将访问凭据与 cloud-init 用户数据中的应用数据分隔开。这个方法不会影响 cloud-init 用户数据。
先决条件
- 
									您可以通过运行 ssh-keygen命令生成 SSH 密钥对。
流程
- 为 - VirtualMachine对象和- Secret对象创建清单文件:- 清单示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 - VirtualMachine和- Secret对象:- oc create -f <manifest_file>.yaml - $ oc create -f <manifest_file>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来启动虚拟机: - virtctl start vm example-vm -n example-namespace - $ virtctl start vm example-vm -n example-namespace- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 获取虚拟机配置: - oc describe vm example-vm -n example-namespace - $ oc describe vm example-vm -n example-namespace- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.5.2.3. 动态密钥管理
您可以使用 OpenShift Container Platform Web 控制台或命令行为虚拟机(VM)启用动态密钥注入。然后,您可以在运行时更新密钥。
只有 Red Hat Enterprise Linux (RHEL) 9 支持动态密钥注入。
如果您禁用动态密钥注入,则虚拟机会继承创建它的镜像的密钥管理方法。
7.5.2.3.1. 从模板创建虚拟机时启用动态密钥注入
在使用 OpenShift Container Platform web 控制台从模板创建虚拟机时,您可以启用动态公共 SSH 密钥注入。然后,您可以在运行时更新密钥。
只有 Red Hat Enterprise Linux (RHEL) 9 支持动态密钥注入。
密钥由 QEMU 客户机代理添加到虚拟机,该代理使用 RHEL 9 安装。
先决条件
- 
									您可以通过运行 ssh-keygen命令生成 SSH 密钥对。
流程
- 
									在 web 控制台中进入到 Virtualization Catalog。 
- 点 Red Hat Enterprise Linux 9 虚拟机 标题。
- 点 Customize VirtualMachine。
- 点击 Next。
- 点 Scripts 选项卡。
- 如果您还没有在项目中添加公共 SSH 密钥,点 Authorized SSH key 旁边的编辑图标,然后选择以下选项之一: - 使用现有 :从 secrets 列表中选择一个 secret。
- 添加新 : - 浏览到 SSH 密钥文件或在 key 字段中粘贴文件。
- 输入 secret 名称。
- 可选: 选择 Automatically apply this key to any new VirtualMachine you create in this project。
 
 
- 将 Dynamic SSH 密钥注入 设置为 on。
- 点击 Save。
- 点 Create VirtualMachine。 - VirtualMachine 详情页显示创建虚拟机的进度。 
验证
- 点 Configuration 选项卡上的 Scripts 选项卡。 - secret 名称显示在 Authorized SSH key 部分中。 
7.5.2.3.2. 使用 Web 控制台在从实例类型创建虚拟机时启用动态密钥注入
您可以使用 OpenShift Container Platform web 控制台从实例类型创建虚拟机 (VM)。您还可以通过复制现有快照或克隆虚拟机,来使用 Web 控制台创建虚拟机。
您可以从可用可引导卷列表创建虚拟机。您可以在列表中添加基于 Linux 或 Windows 的卷。
在使用 OpenShift Container Platform web 控制台从实例类型创建虚拟机(VM)时,您可以启用动态 SSH 密钥注入。然后,您可以在运行时添加或撤销密钥。
只有 Red Hat Enterprise Linux (RHEL) 9 支持动态密钥注入。
密钥由 QEMU 客户机代理添加到虚拟机,该代理使用 RHEL 9 安装。
流程
- 在 Web 控制台中,进入到 Virtualization - Catalog。 - InstanceTypes 选项卡默认为打开。 
- 选择以下选项之一: - 从列表中选择合适的可引导卷。如果列表已被截断,请点 Show all 按钮来显示整个列表。 注意- 可引导的卷表仅列出 - openshift-virtualization-os-images命名空间中具有- instancetype.kubevirt.io/default-preference标签的卷。- 可选:点星号图标将可引导卷指定为热门卷。不足的可引导卷首先出现在卷列表中。
 
- 点 Add volume 上传新卷,或使用现有的持久性卷声明(PVC)、卷快照或 - containerDisk卷。点击 Save。- 集群中不可用的操作系统的徽标显示在列表的底部。您可以点 Add volume 链接为所需的操作系统添加卷。 - 另外,还有 创建 Windows 引导源快速启动的链接。如果您将鼠标悬停在 Select volume to boot from 行旁边的问号图标上,则同一链接会出现在弹出窗口中。 - 安装环境或环境断开连接后,从中引导的卷列表为空。在这种情况下,会显示三个操作系统徽标:Windows、RHEL 和 Linux。您可以点 Add volume 按钮添加新卷来满足您的要求。 
 
- 点实例类型标题,然后选择适合您的工作负载的资源大小。
- 点 Red Hat Enterprise Linux 9 虚拟机 标题。
- 可选:选择虚拟机详情,包括虚拟机的名称,适用于您要从其引导的卷: - 对于基于 Linux 的卷,请按照以下步骤配置 SSH: - 如果您还没有在项目中添加公共 SSH 密钥,点 VirtualMachine details 部分中的 Authorized SSH key 旁边的编辑图标。
- 选择以下选项之一: - 使用现有 :从 secrets 列表中选择一个 secret。
- Add new: 遵循以下步骤: - 浏览到公共 SSH 密钥文件,或在 key 字段中粘贴文件。
- 输入 secret 名称。
- 可选: 选择 Automatically apply this key to any new VirtualMachine you create in this project。
 
 
- 点击 Save。
 
- 对于 Windows 卷,请按照以下步骤配置 sysprep 选项: - 如果您还没有为 Windows 卷添加 sysprep 选项,请按照以下步骤执行: - 点 VirtualMachine 详情 部分中的 Sysprep 的编辑图标。
- 添加 Autoattend.xml 回答文件。
- 添加 Unattend.xml 回答文件。
- 点击 Save。
 
- 如果要将现有的 sysprep 选项用于 Windows 卷,请按照以下步骤执行: - 点 Attach existing sysprep。
- 输入现有 sysprep Unattend.xml 回答文件的名称。
- 点击 Save。
 
 
 
- 在 VirtualMachine 详情 部分中将 Dynamic SSH 密钥注入 设置为 on。
- 可选: 如果要创建 Windows 虚拟机,您可以挂载 Windows 驱动程序磁盘: - 点 Customize VirtualMachine 按钮。
- 在 VirtualMachine 详情页中,点 Storage。
- 选择 Mount Windows 驱动程序磁盘复选框。
 
- 可选:点 View YAML & CLI 查看 YAML 文件。点 CLI 查看 CLI 命令。您还可以下载或复制 YAML 文件内容或 CLI 命令。
- 点 Create VirtualMachine。
创建虚拟机后,您可以在 VirtualMachine 详情页中监控状态。
7.5.2.3.3. 使用 Web 控制台启用动态 SSH 密钥注入
您可以使用 OpenShift Container Platform Web 控制台为虚拟机 (VM) 启用动态密钥注入。然后,您可以在运行时更新公共 SSH 密钥。
该密钥由 QEMU 客户机代理添加到虚拟机,该代理与 Red Hat Enterprise Linux (RHEL) 9 一起安装。
先决条件
- 客户机操作系统是 RHEL 9。
流程
- 
									在 web 控制台中进入到 Virtualization VirtualMachines。 
- 选择一个虚拟机以打开 VirtualMachine 详情页。
- 在 Configuration 选项卡上,点 Scripts。
- 如果您还没有在项目中添加公共 SSH 密钥,点 Authorized SSH key 旁边的编辑图标,然后选择以下选项之一: - 使用现有 :从 secrets 列表中选择一个 secret。
- 添加新 : - 浏览到 SSH 密钥文件或在 key 字段中粘贴文件。
- 输入 secret 名称。
- 可选: 选择 Automatically apply this key to any new VirtualMachine you create in this project。
 
 
- 将 Dynamic SSH 密钥注入 设置为 on。
- 点击 Save。
7.5.2.3.4. 使用命令行启用动态密钥注入
您可以使用命令行为虚拟机启用动态密钥注入。然后,您可以在运行时更新公共 SSH 密钥。
只有 Red Hat Enterprise Linux (RHEL) 9 支持动态密钥注入。
密钥由 QEMU 客户机代理添加到虚拟机,该代理使用 RHEL 9 自动安装安装。
先决条件
- 
									您可以通过运行 ssh-keygen命令生成 SSH 密钥对。
流程
- 为 - VirtualMachine对象和- Secret对象创建清单文件:- 清单示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 - VirtualMachine和- Secret对象:- oc create -f <manifest_file>.yaml - $ oc create -f <manifest_file>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来启动虚拟机: - virtctl start vm example-vm -n example-namespace - $ virtctl start vm example-vm -n example-namespace- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 获取虚拟机配置: - oc describe vm example-vm -n example-namespace - $ oc describe vm example-vm -n example-namespace- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.5.2.4. 使用 virtctl ssh 命令
						您可以使用 virtcl ssh 命令访问正在运行的虚拟机(VM)。
					
先决条件
- 
								已安装 virtctl命令行工具。
- 您已向虚拟机添加了一个公共 SSH 密钥。
- 已安装 SSH 客户端。
- 
								安装 virtctl工具的环境具有访问虚拟机所需的集群权限。例如,运行oc login或设置了KUBECONFIG环境变量。
流程
- 运行 - virtctl ssh命令:- virtctl -n <namespace> ssh <username>@example-vm -i <ssh_key> - $ virtctl -n <namespace> ssh <username>@example-vm -i <ssh_key>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定命名空间、用户名和 SSH 私钥。默认的 SSH 密钥位置为/home/user/.ssh。如果密钥保存在不同的位置,您必须指定路径。
 - 例如 - virtctl -n my-namespace ssh cloud-user@example-vm -i my-key - $ virtctl -n my-namespace ssh cloud-user@example-vm -i my-key- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
						您可以在 web 控制台中复制 virtctl ssh 命令,方法是从 VirtualMachines 页中的虚拟机旁的选项 
						 菜单中选择 Copy SSH 命令。
						 菜单中选择 Copy SSH 命令。
					
7.5.3. 使用 virtctl port-forward 命令
					您可以使用本地 OpenSSH 客户端和 virtctl port-forward 命令连接到正在运行的虚拟机 (VM)。您可以将此方法与 Ansible 配合使用,以自动配置虚拟机。
				
对于低流量应用程序,建议使用这个方法,因为端口转发流量通过 control plane 发送。对于 Rsync 或 Remote Desktop 协议等高流量应用程序(如 Rsync 或 Remote Desktop 协议)使用这个方法,因为它对 API 服务器造成大量负担。
先决条件
- 
							已安装 virtctl客户端。
- 您要访问的虚拟机正在运行。
- 
							安装 virtctl工具的环境具有访问虚拟机所需的集群权限。例如,运行oc login或设置了KUBECONFIG环境变量。
流程
- 在客户端机器上的 - ~/.ssh/config文件中添加以下文本:- Host vm/* ProxyCommand virtctl port-forward --stdio=true %h %p - Host vm/* ProxyCommand virtctl port-forward --stdio=true %h %p- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来连接到虚拟机: - ssh <user>@vm/<vm_name>.<namespace> - $ ssh <user>@vm/<vm_name>.<namespace>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.5.4. 使用服务进行 SSH 访问
您可以为虚拟机(VM)创建服务,并连接到该服务公开的 IP 地址和端口。
服务为从集群外部或集群外部访问的应用程序提供出色的性能,并推荐使用。入口流量受防火墙保护。
如果集群网络无法处理流量负载,请考虑使用二级网络进行虚拟机访问。
7.5.4.1. 关于服务
						Kubernetes 服务将客户端的网络访问权限公开给一组容器集上运行的应用。服务在 NodePort 和 LoadBalancer 类型方面提供抽象、负载均衡以及暴露于外部世界。
					
- ClusterIP
- 
									在内部 IP 地址上公开服务,并将 DNS 名称公开给集群中的其他应用程序。单个服务可映射到多个虚拟机。当客户端尝试连接到服务时,客户端请求会在可用后端之间平衡负载。ClusterIP是默认的服务类型。
- NodePort
- 
									在集群中每个所选节点的同一端口上公开该服务。NodePort使端口可从集群外部访问,只要节点本身可以被客户端外部访问。
- LoadBalancer
- 在当前云中创建外部负载均衡器(如果支持),并为该服务分配固定的外部 IP 地址。
对于内部集群,您可以通过部署 MetalLB Operator 来配置负载均衡服务。
7.5.4.2. 创建服务
						您可以使用 OpenShift Container Platform web 控制台、virtctl 命令行工具或 YAML 文件创建服务来公开虚拟机(VM)。
					
7.5.4.2.1. 使用 Web 控制台启用负载均衡器服务创建
您可以使用 OpenShift Container Platform web 控制台为虚拟机(VM)创建负载均衡器服务。
先决条件
- 已为集群配置负载均衡器。
- 
									以具有 cluster-admin角色的用户身份登录。
- 为网络创建了网络附加定义。
流程
- 
									进入到 Virtualization Overview。 
- 在 Settings 选项卡中,点 Cluster。
- 展开 General settings 和 SSH 配置。
- 将 SSH over LoadBalancer 服务 设置为 on。
7.5.4.2.2. 使用 Web 控制台创建服务
您可以使用 OpenShift Container Platform web 控制台为虚拟机(VM)创建节点端口或负载均衡器服务。
先决条件
- 已将集群网络配置为支持负载均衡器或节点端口。
- 要创建负载均衡器服务,您需要已启用了创建负载均衡器服务。
流程
- 进入 VirtualMachines 并选择虚拟机来查看 VirtualMachine 详情页。
- 在 Details 选项卡中,从 SSH service type 列表中选择 SSH over LoadBalancer。
- 
									可选:点复制图标将 SSH命令复制到您的剪贴板。
验证
- 检查 Details 标签页中的 Services 窗格,以查看新服务。
7.5.4.2.3. 使用 virtctl 创建服务
							您可以使用 virtctl 命令行工具为虚拟机 (VM) 创建服务。
						
先决条件
- 
									已安装 virtctl命令行工具。
- 您已将集群网络配置为支持该服务。
- 
									安装 virtctl的环境具有访问虚拟机所需的集群权限。例如,运行oc login或设置了KUBECONFIG环境变量。
流程
- 运行以下命令来创建服务: - virtctl expose vm <vm_name> --name <service_name> --type <service_type> --port <port> - $ virtctl expose vm <vm_name> --name <service_name> --type <service_type> --port <port>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定ClusterIP、NodePort或LoadBalancer服务类型。
 - 例如 - virtctl expose vm example-vm --name example-service --type NodePort --port 22 - $ virtctl expose vm example-vm --name example-service --type NodePort --port 22- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令验证服务: - oc get service - $ oc get service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
后续步骤
								使用 virtctl 创建服务后,您必须将 special: key 添加到 VirtualMachine 清单的 spec.template.metadata.labels 小节中。请参阅使用命令行创建服务。
							
7.5.4.2.4. 使用命令行创建服务
您可以使用命令行创建服务并将其与虚拟机 (VM) 关联。
先决条件
- 您已将集群网络配置为支持该服务。
流程
- 编辑 - VirtualMachine清单,为创建服务添加标签:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 在spec.template.metadata.labels小节中添加special: key。
 注意- 虚拟机上的标签会传递到 pod。 - special: key标签必须与- Service清单的- spec.selector属性中的标签匹配。
- 
									保存 VirtualMachine清单文件以应用更改。
- 创建 - Service清单以公开虚拟机:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
									保存 Service清单文件。
- 运行以下命令来创建服务: - oc create -f example-service.yaml - $ oc create -f example-service.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 重启虚拟机以应用更改。
验证
- 查询 - Service对象以验证它是否可用:- oc get service -n example-namespace - $ oc get service -n example-namespace- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.5.4.3. 使用 SSH 连接到服务公开的虚拟机
您可以使用 SSH 连接到服务公开的虚拟机 (VM)。
先决条件
- 您创建了服务来公开虚拟机。
- 已安装 SSH 客户端。
- 已登陆到集群。
流程
- 运行以下命令来访问虚拟机: - ssh <user_name>@<ip_address> -p <port> - $ ssh <user_name>@<ip_address> -p <port>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定集群 IP 服务的集群 IP、节点端口服务的节点 IP 或负载均衡器服务的外部 IP 地址。
 
7.5.5. 使用二级网络进行 SSH 访问
您可以配置二级网络,将虚拟机 (VM) 附加到二级网络接口,并使用 SSH 连接到 DHCP 分配的 IP 地址。
辅助网络提供卓越的性能,因为流量不是由集群网络堆栈处理。但是,虚拟机直接公开给二级网络,不受防火墙保护。如果虚拟机被破坏,入侵者可能会获得对二级网络的访问权限。如果使用此方法,您必须在虚拟机操作系统中配置适当的安全性。
有关网络选项的更多信息,请参阅 OpenShift Virtualization 调优和扩展指南中的 Multus 和 SR-IOV 文档。
先决条件
- 已配置了一个二级网络,如 Linux 网桥或 SR-IOV。
- 
							为 Linux 网桥网络 或 SR-IOV Network Operator 创建网络附加定义,在创建 SriovNetwork对象时创建了网络附加定义。
7.5.5.1. 使用 Web 控制台配置虚拟机网络接口
您可以使用 OpenShift Container Platform Web 控制台为虚拟机配置网络接口。
先决条件
- 为网络创建了网络附加定义。
流程
- 
								进入到 Virtualization VirtualMachines。 
- 点虚拟机查看 VirtualMachine 详情页。
- 在 Configuration 选项卡上,点 Network interfaces 选项卡。
- 点 Add network interface。
- 输入接口名称,然后从 Network 列表中选择网络附加定义。
- 点击 Save。
- 重启或实时迁移虚拟机以应用更改。
7.5.5.2. 使用 SSH 连接到附加到二级网络的虚拟机
您可以使用 SSH 连接到二级网络的虚拟机 (VM)。
先决条件
- 将虚拟机附加到使用 DHCP 服务器的二级网络。
- 已安装 SSH 客户端。
流程
- 运行以下命令来获取虚拟机的 IP 地址: - oc describe vm <vm_name> -n <namespace> - $ oc describe vm <vm_name> -n <namespace>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来连接到虚拟机: - ssh <user_name>@<ip_address> -i <ssh_key> - $ ssh <user_name>@<ip_address> -i <ssh_key>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例如 - ssh cloud-user@10.244.0.37 -i ~/.ssh/id_rsa_cloud-user - $ ssh cloud-user@10.244.0.37 -i ~/.ssh/id_rsa_cloud-user- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
您还可以使用 集群 FQDN 访问附加到二级网络接口的虚拟机。