6.5. 访问虚拟机控制台

容器原生虚拟化提供不同的虚拟机控制台,您可使用这些控制台来完成不同的产品任务。您可通过 web 控制台并使用 CLI 命令来访问这些控制台。

6.5.1. 虚拟机控制台会话

您可从 web 控制台上 Virtual Machine Details 屏幕中的 Consoles 选项卡连接至正在运行的虚拟机的 VNC 控制台和串行控制台。

有两个控制台可用:图形 VNC ConsoleSerial Console。每次导航到 Consoles 选项卡时会默认打开 VNC Console。您可使用 VNC Console Serial Console 列表来切换这两种控制台。

控制台会话将在后台保持活跃,除非断开连接。当 Disconnect before switching 复选框活跃且您切换了控制台时,当前控制台会话将断开连接,与选定控制台的新会话将连接至虚拟机。这样可保证一次仅打开一个控制台会话。

VNC Console 的选项

Send Key 按钮列出了要发送至虚拟机的密钥组合。

Serial Console 的选项

使用 Disconnect 按钮可手动断开 Serial Console 会话与虚拟机的连接。
使用 Reconnect 按钮可手动打开 Serial Console 会话与虚拟机的连接。

6.5.2. 使用 web 控制台连接至虚拟机

6.5.2.1. 连接至终端

您可使用 web 控制台连接至虚拟机。

流程

  1. 确定您处于正确的项目中。如果不是,则点击 Project 列表,然后选择适当项目。
  2. 点击 WorkloadsVirtual Machines 以显示该项目中的虚拟机。
  3. 选择虚拟机。
  4. 进入 Overview 选项卡中,点击 virt-launcher-<vm-name> Pod。
  5. 点击 Terminal 选项卡。如果终端空白,则选择终端,然后按任意键启动连接。

6.5.2.2. 连接至串行控制台

从 web 控制台上 Virtual Machine Details 屏幕中的 Consoles 选项卡连接至正在运行的虚拟机的 Serial Console

流程

  1. 在容器原生虚拟化控制台中,点击 WorkloadsVirtual Machines
  2. 选择虚拟机。
  3. 点击 Consoles。默认会打开 VNC 控制台。
  4. 点击 VNC Console 下拉菜单并选择 Serial Console

6.5.2.3. 连接至 VNC 控制台

从 web 控制台上 Virtual Machine Details 屏幕中的 Consoles 选项卡连接至正在运行的虚拟机的 VNC 控制台。

流程

  1. 在容器原生虚拟化控制台中,点击 WorkloadsVirtual Machines
  2. 选择虚拟机。
  3. 点击 Consoles。默认会打开 VNC 控制台。

6.5.2.4. 连接至 RDP 控制台

桌面查看器控制台利用远程桌面协议 (RDP),为连接至 Windows 虚拟机提供更好的控制台体验。

要使用 RDP 连接至 Windows 虚拟机,请从 web 控制台上 Virtual Machine Details 屏幕中的 Consoles 选项卡下载虚拟机的 console.rdp 文件,并将其提供给您首选的 RDP 客户端。

先决条件

  • 正在运行的 Windows 虚拟机装有 QEMU 客户机代理。VirtIO 驱动程序中包含 qemu-guest-agent
  • 第 2 层 vNIC 附加到虚拟机。
  • 与 Windows 虚拟机处于相同网络的机器上装有 RDP 客户端。

流程

  1. 在容器原生虚拟化控制台中,点击 WorkloadsVirtual Machines
  2. 选择 Windows 虚拟机。
  3. 点击 Consoles 选项卡。
  4. 点击 Consoles 列表并选择 Desktop Viewer
  5. Network Interface 列表中,选择第 2 层 vNIC。
  6. 点击 Launch Remote Desktop 下载 console.rdp 文件。
  7. 打开 RDP 客户端并引用 console.rdp 文件。例如,使用 Remmina

    $ remmina --connect /path/to/console.rdp
  8. 输入 Administrator 用户名和密码以连接至 Windows 虚拟机。

6.5.3. 使用 CLI 命令访问虚拟机控制台

6.5.3.1. 通过 SSH 访问虚拟机实例

您在虚拟机上公开 22 号端口后,即可使用 SSH 来访问虚拟机。

使用 virtctl expose 命令可将虚拟机实例端口转发至节点端口,并为启用的访问创建服务。以下示例创建 fedora-vm-ssh 服务,该服务将 <fedora-vm> 虚拟机的 22 号端口转发至节点上的端口:

先决条件

  • 您要访问的虚拟机实例必须使用 masquerade 绑定方法连接至默认的 Pod 网络。
  • 您要访问的虚拟机实例必须正在运行。
  • 安装 OpenShift CLI(oc)。

流程

  1. 运行以下命令来创建 fedora-vm-ssh 服务:

    $ virtctl expose vm <fedora-vm> --port=20022 --target-port=22 --name=fedora-vm-ssh --type=NodePort 1
    1
    <fedora-vm> 是您在其上运行 fedora-vm-ssh 服务的虚拟机的名称。
  2. 检查服务,找出服务获取的端口:

    $ oc get svc
    NAME            TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE
    fedora-vm-ssh   NodePort   127.0.0.1      <none>        20022:32551/TCP   6s

    在本例中,服务获取了 32551 端口。

  3. 通过 SSH 登录虚拟机实例。使用节点的 ipAddress 以及您在上一步中发现的端口:

    $ ssh username@<node_IP_address> -p 32551

6.5.3.2. 访问虚拟机实例的串行控制台

virtctl console 命令可打开特定虚拟机实例的串行控制台。

先决条件

  • 必须安装 virt-viewer 软件包。
  • 您要访问的虚拟机实例必须正在运行。

流程

  • 使用 virtctl 连接至串行控制台:

    $ virtctl console <VMI>

6.5.3.3. 使用 VNC 访问虚拟机实例的图形控制台

virtctl 客户端实用程序可使用 remote-viewer 功能打开正在运行的虚拟机实例的图形控制台。该功能包含在 virt-viewer 软件包中。

先决条件

  • 必须安装 virt-viewer 软件包。
  • 您要访问的虚拟机实例必须正在运行。
注意

如果要通过 SSH 在远程机器上使用 virtctl,您必须将 X 会话转发至您的机器。

流程

  1. 使用 virtctl 实用程序连接至图形界面:

    $ virtctl vnc <VMI>
  2. 如果命令失败,请尝试使用 -v 标志来收集故障排除信息:

    $ virtctl vnc <VMI> -v 4

6.5.3.4. 通过 RDP 控制台连接至 Windows 虚拟机

远程桌面协议 (RDP) 为连接至 Windows 虚拟机提供更好的控制台体验。

要通过 RDP 连接至 Windows 虚拟机,请为 RDP 客户端指定附加的 L2 vNIC 的 IP 地址。

先决条件

  • 正在运行的 Windows 虚拟机装有 QEMU 客户机代理。VirtIO 驱动程序中包含 qemu-guest-agent
  • 第 2 层 vNIC 附加到虚拟机。
  • 与 Windows 虚拟机处于相同网络的机器上装有 RDP 客户端。

流程

  1. 以具有访问令牌的用户身份通过 oc CLI 工具登录容器原生虚拟化集群。

    $ oc login -u <user> https://<cluster.example.com>:8443
  2. 使用 oc describe vmi 显示正在运行的 Windows 虚拟机的配置。

    $ oc describe vmi <windows-vmi-name>
    ...
    spec:
      networks:
      - name: default
        pod: {}
      - multus:
          networkName: cnv-bridge
        name: bridge-net
    ...
    status:
      interfaces:
      - interfaceName: eth0
        ipAddress: 198.51.100.0/24
        ipAddresses:
          198.51.100.0/24
        mac: a0:36:9f:0f:b1:70
        name: default
      - interfaceName: eth1
        ipAddress: 192.0.2.0/24
        ipAddresses:
          192.0.2.0/24
          2001:db8::/32
        mac: 00:17:a4:77:77:25
        name: bridge-net
    ...
  3. 找出并复制第 2 层网络接口的 IP 地址。在以上示例中是 192.0.2.0,如果您首选 IPv6,则为 2001:db8::
  4. 打开 RDP 客户端,并使用上一步中复制的 IP 地址进行连接。
  5. 输入 Administrator 用户名和密码以连接至 Windows 虚拟机。