6.3. 连接到虚拟机控制台
您可以连接到以下控制台来访问正在运行的虚拟机 (VM):
6.3.1. 连接至 VNC 控制台
您可以使用 Red Hat OpenShift Service on AWS web 控制台或 virtctl
命令行工具连接到虚拟机的 VNC 控制台。
6.3.1.1. 使用 Web 控制台连接到 VNC 控制台
您可以使用 Red Hat OpenShift Service on AWS web 控制台连接至虚拟机的 VNC 控制台。
如果您使用分配了介质设备的 vGPU 连接到 Windows 虚拟机,您可以在默认显示和 vGPU 显示间切换。
流程
-
在 Virtualization
VirtualMachines 页面中,点虚拟机打开 VirtualMachine 详情页。 - 点击 Console 选项卡。VNC 控制台会话会自动启动。
可选: 要切换到 Windows 虚拟机的 vGPU 显示,请从 Send key 列表中选择 Ctl + Alt + 2。
- 从 Send key 列表中选择 Ctl + Alt + 1 以恢复默认显示。
- 要结束控制台会话,请点控制台窗格外,然后点 Disconnect。
6.3.1.2. 使用 virtctl 连接到 VNC 控制台
您可使用 virtctl
命令行工具连接到正在运行的虚拟机的 VNC 控制台。
如果您通过 SSH 连接在远程机器上运行 virtctl vnc
命令,则必须使用 -X
或 -Y
标志运行 ssh
命令,将 X 会话转发到本地机器。
先决条件
-
您必须安装
virt-viewer
软件包。
流程
运行以下命令以启动控制台会话:
$ virtctl vnc <vm_name>
如果连接失败,请运行以下命令来收集故障排除信息:
$ virtctl vnc <vm_name> -v 4
6.3.1.3. 为 VNC 控制台生成临时令牌
要访问虚拟机的 VNC,请为 Kubernetes API 生成临时身份验证 bearer 令牌。
Kubernetes 还支持通过修改 curl 命令来使用客户端证书进行身份验证,而不是 bearer 令牌。
先决条件
-
一个运行的虚拟机,带有 OpenShift Virtualization 4.14 或更高版本,
ssp-operator
4.14 或更高版本
流程
在 HyperConverged (
HCO
)自定义资源(CR)中启用功能门:$ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv --type json -p '[{"op": "replace", "path": "/spec/featureGates/deployVmConsoleProxy", "value": true}]'
输入以下命令生成令牌:
$ curl --header "Authorization: Bearer ${TOKEN}" \ "https://api.<cluster_fqdn>/apis/token.kubevirt.io/v1alpha1/namespaces/<namespace>/virtualmachines/<vm_name>/vnc?duration=<duration>"
&
lt;duration
> 参数可以以小时和分钟为单位设置,最小持续时间为 10 分钟。例如:5h30m
。如果没有设置此参数,令牌默认为 10 分钟有效。输出示例:
{ "token": "eyJhb..." }
可选:使用输出中提供的令牌来创建变量:
$ export VNC_TOKEN="<token>"
现在,您可以使用令牌来访问虚拟机的 VNC 控制台。
验证
输入以下命令登录到集群:
$ oc login --token ${VNC_TOKEN}
使用
virtctl
命令测试对虚拟机的 VNC 控制台的访问:$ virtctl vnc <vm_name> -n <namespace>
目前无法撤销特定的令牌。
要撤销令牌,您必须删除用于创建令牌的服务帐户。但是,这也会撤销使用服务帐户创建的所有令牌。请谨慎使用以下命令:
$ virtctl delete serviceaccount --namespace "<namespace>" "<vm_name>-vnc-access"
6.3.1.3.1. 使用集群角色为 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}"
6.3.2. 连接至串行控制台
您可以使用 Red Hat OpenShift Service on AWS web 控制台或 virtctl
命令行工具连接到虚拟机的串行控制台。
目前不支持运行到单个虚拟机的并发 VNC 连接。
6.3.2.1. 使用 Web 控制台连接到串行控制台
您可以使用 Red Hat OpenShift Service on AWS web 控制台连接至虚拟机的串行控制台。
流程
-
在 Virtualization
VirtualMachines 页面中,点虚拟机打开 VirtualMachine 详情页。 - 点击 Console 选项卡。VNC 控制台会话会自动启动。
- 点 Disconnect 结束 VNC 控制台会话。否则,VNC 控制台会话会在后台继续运行。
- 从控制台列表中选择 Serial console。
- 要结束控制台会话,请点控制台窗格外,然后点 Disconnect。
6.3.2.2. 使用 virtctl 连接到串行控制台
您可使用 virtctl
命令行工具连接到正在运行的虚拟机的串行控制台。
流程
运行以下命令以启动控制台会话:
$ virtctl console <vm_name>
-
按
Ctrl+]
结束控制台会话。
6.3.3. 连接到桌面视图
您可以使用 desktop viewer 和 Remote Desktop Protocol (RDP) 连接到 Windows 虚拟机。
6.3.3.1. 使用 Web 控制台连接到桌面查看器
您可以使用 Red Hat OpenShift Service on AWS web 控制台连接到 Windows 虚拟机的桌面视图。
先决条件
- 您已在 Windows 虚拟机上安装了 QEMU 客户机代理。
- 已安装 RDP 客户端。
流程
-
在 Virtualization
VirtualMachines 页面中,点虚拟机打开 VirtualMachine 详情页。 - 点击 Console 选项卡。VNC 控制台会话会自动启动。
- 点 Disconnect 结束 VNC 控制台会话。否则,VNC 控制台会话会在后台继续运行。
- 从控制台列表中选择 Desktop viewer。
- 点 Create RDP Service 打开 RDP Service 对话框。
- 选择 Expose RDP Service 并点 Save 创建节点端口服务。
-
点 Launch Remote Desktop 以下载
.rdp
文件并启动桌面查看器。