×

连接到 VNC 控制台

您可以使用 Red Hat OpenShift Service on AWS Web 控制台或virtctl命令行工具连接到虚拟机的 VNC 控制台。

使用 Web 控制台连接到 VNC 控制台

您可以使用 Red Hat OpenShift Service on AWS Web 控制台连接到虚拟机 (VM) 的 VNC 控制台。

如果您连接到分配了作为媒介设备的 vGPU 的 Windows VM,则可以在默认显示和 vGPU 显示之间切换。

步骤
  1. 在**虚拟化** → **虚拟机**页面上,单击一个 VM 以打开**虚拟机详细信息**页面。

  2. 单击**控制台**选项卡。VNC 控制台会话将自动启动。

  3. 可选:要切换到 Windows VM 的 vGPU 显示,请从**发送键**列表中选择**Ctl + Alt + 2**。

    • 从**发送键**列表中选择**Ctl + Alt + 1**以恢复默认显示。

  4. 要结束控制台会话,请单击控制台窗格外部,然后单击**断开连接**。

使用 virtctl 连接到 VNC 控制台

您可以使用virtctl命令行工具连接到正在运行的虚拟机的 VNC 控制台。

如果您通过 SSH 连接在远程计算机上运行virtctl vnc命令,则必须通过使用-X-Y标志运行ssh命令将 X 会话转发到本地计算机。

先决条件
  • 您必须安装virt-viewer软件包。

步骤
  1. 运行以下命令启动控制台会话:

    $ virtctl vnc <vm_name>
  2. 如果连接失败,请运行以下命令收集故障排除信息:

    $ virtctl vnc <vm_name> -v 4

为 VNC 控制台生成临时令牌

要访问虚拟机 (VM) 的 VNC,请为 Kubernetes API 生成一个临时的身份验证承载令牌。

Kubernetes 还支持使用客户端证书(而不是承载令牌)进行身份验证,方法是修改 curl 命令。

先决条件
  • 运行的 VM 使用 OpenShift Virtualization 4.14 或更高版本和ssp-operator 4.14 或更高版本

步骤
  1. 在超融合 (HCO) 自定义资源 (CR) 中启用功能网关

    $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv --type json -p '[{"op": "replace", "path": "/spec/featureGates/deployVmConsoleProxy", "value": true}]'
  2. 通过输入以下命令生成令牌:

    $ curl --header "Authorization: Bearer ${TOKEN}" \
         "https://api.<cluster_fqdn>/apis/token.kubevirt.io/v1alpha1/namespaces/<namespace>/virtualmachines/<vm_name>/vnc?duration=<duration>"

    <duration>参数可以用小时和分钟设置,最短持续时间为 10 分钟。例如:5h30m。如果未设置此参数,则令牌默认有效期为 10 分钟。

    示例输出

    { "token": "eyJhb..." }
  3. 可选:使用输出中提供的令牌创建一个变量

    $ export VNC_TOKEN="<token>"

您现在可以使用此令牌访问 VM 的 VNC 控制台。

验证
  1. 通过输入以下命令登录到集群:

    $ oc login --token ${VNC_TOKEN}
  2. 使用virtctl命令测试对 VM 的 VNC 控制台的访问:

    $ virtctl vnc <vm_name> -n <namespace>

目前无法撤销特定令牌。

要撤销令牌,必须删除用于创建它的服务帐户。但是,这也会撤销使用该服务帐户创建的所有其他令牌。谨慎使用以下命令:

$ virtctl delete serviceaccount --namespace "<namespace>" "<vm_name>-vnc-access"

使用集群角色授予 VNC 控制台令牌生成权限

作为集群管理员,您可以安装集群角色并将其绑定到用户或服务帐户,以允许访问生成 VNC 控制台令牌的端点。

步骤
  • 选择将集群角色绑定到用户或服务帐户。

    • 运行以下命令将集群角色绑定到用户:

      $ kubectl create rolebinding "${ROLE_BINDING_NAME}" --clusterrole="token.kubevirt.io:generate" --user="${USER_NAME}"
    • 运行以下命令将集群角色绑定到服务帐户:

      $ kubectl create rolebinding "${ROLE_BINDING_NAME}" --clusterrole="token.kubevirt.io:generate" --serviceaccount="${SERVICE_ACCOUNT_NAME}"

连接到串行控制台

您可以使用 Red Hat OpenShift Service on AWS Web 控制台或virtctl命令行工具连接到虚拟机的串行控制台。

目前不支持同时运行到单个虚拟机的多个 VNC 连接。

使用 Web 控制台连接到串行控制台

您可以使用 Red Hat OpenShift Service on AWS Web 控制台连接到虚拟机 (VM) 的串行控制台。

步骤
  1. 在**虚拟化** → **虚拟机**页面上,单击一个 VM 以打开**虚拟机详细信息**页面。

  2. 单击**控制台**选项卡。VNC 控制台会话将自动启动。

  3. 单击**断开连接**以结束 VNC 控制台会话。否则,VNC 控制台会话将继续在后台运行。

  4. 从控制台列表中选择**串行控制台**。

  5. 要结束控制台会话,请单击控制台窗格外部,然后单击**断开连接**。

使用 virtctl 连接到串行控制台

您可以使用virtctl命令行工具连接到正在运行的虚拟机的串行控制台。

步骤
  1. 运行以下命令启动控制台会话:

    $ virtctl console <vm_name>
  2. Ctrl+]结束控制台会话。

连接到桌面查看器

您可以使用桌面查看器和远程桌面协议 (RDP) 连接到 Windows 虚拟机 (VM)。

使用 Web 控制台连接到桌面查看器

您可以使用 Red Hat OpenShift Service on AWS Web 控制台连接到 Windows 虚拟机 (VM) 的桌面查看器。

先决条件
  • 您已在 Windows VM 上安装了 QEMU 来宾代理。

  • 您已安装 RDP 客户端。

步骤
  1. 在**虚拟化** → **虚拟机**页面上,单击一个 VM 以打开**虚拟机详细信息**页面。

  2. 单击**控制台**选项卡。VNC 控制台会话将自动启动。

  3. 单击**断开连接**以结束 VNC 控制台会话。否则,VNC 控制台会话将继续在后台运行。

  4. 从控制台列表中选择桌面查看器

  5. 点击创建RDP服务打开RDP服务对话框。

  6. 选择公开RDP服务,然后点击保存以创建节点端口服务。

  7. 点击启动远程桌面下载.rdp文件并启动桌面查看器。