目的
以 VNC 的方法连接到 VMI
启用 noNVC 方法, 利用网页就可以对 VMI 进行访问
kubevirt vnc 原理
kubernetes 启动 POD ( virt-launcher ) 启动 VMI
virt-launcher 定义了 VMI 的硬件,信息, 如 CPU, 内存,中断, 接口等, 同时也定义了 VNC 的使用方式
virt-launcher 使用了参数 -vnc unix:xxxx.socket 方法启动 VMI
unix:xxxx.socket 导致了无法完成外部 VNC 直接访问到 VMI 中
kubectl virt vnc vmi-name (图形界面下) 命令行允许通过 vnc 方法连接到 VMI 中
kubernetes 获取了用户授权, 并且访问一个固定的 ENDPOINT 获取了 vnc 的 socket 数据连接方法
endpoint: wss://serviceip:port/apis/subresources.kubevirt.io/v1alpha3/namespaces/{namespace}/virtualmachineinstances/{VMIname}/vnc
kubevirt web-ui 项目
该项目提供了一种 WEB 的方法进行访问 VMI 的 VNC
该项目只提供了 openshift 的接口
那么普通的 kubernetes 用户(例如我) 就无法使用到该项目完成通过 WEB 方法访问到 VMI 的 VNC
其他问题
当前 VMI 打开了 wss 协议提供 vnc 访问连接
但由于无法获取到 kubernetes 授权
因此无法直接通过 ngingx http_proxy 方法通过访问 endpoint (wss://xxxxx) 完成 vnc 访问
noVNC 项目
一款开源的 vnc 代理项目
可以通过网页访问到主机 VNC
原理
[外链图片转存失败(img-gFneW4Kv-1568283878380)(.