Kubernetes生产实践系列之三:使用noVNC连接在Kubernetes运行的Windows虚拟机

web端通过novnc方式远程windows server环境搭建详解 1、起因 最近公司项目有一个需求,需要实现novnc方式远程连接到服务器,之前没有做过类似的功能,听其他技术说可以自己搭一个novnc的server,搞一个websocket的请求代理,通过novnc的方式就可以实现,抱着试试的心态搭了一下,整个过程搭建下来用了不到10分钟就搞定了。 2、依赖软件列表及下载地址 UltraVNC_1_3_42_X64_Setup: https://uvnc.com/downloads/ultravnc.html noVNC-master:https://github.co 阅读详情

 

一、前言

在文章《Kubernetes生产实践系列之二:在Kubernetes使用kubevirt运行管理Ubuntu/Windows桌面操作系统》中,需要借助于virtctl才能连接到Windows的桌面,这样windows环境的使用者还需要额外具备kubernetes的权限,不是很合理。

这里介绍一种使用noVNC方案,通过web端口借助Kubernetes的Service来暴露服务,让windows使用者可以直接在浏览器访问windows桌面的方案。noVNC访问机器上vncserver提供的vnc服务,进行tcp到websocket的转化。noVNC 被普遍用在各大云计算、虚拟机控制面板中,比如 OpenStack的consol Dashboard。

转载自https://blog.youkuaiyun.com/cloudvtech

二、在Windows安装noVNC

2.1 安装vncserver:ultravnc

reference:http://www.uvnc.com/downloads/ultravnc.html

2.2 安装运行环境

nodejs:https://nodejs.org/en/download/

Websockify:https://nodejs.org/en/download/

安装nodejs modules

npm install ws
npm install optimist
npm install mime-types

node_modules will be created at C:\Users\noVNC\

 2.3 安装noVNC

下载:http://github.com/kanaka/noVNC/zipball/master

Install noVNC and websockify

Unzip noVNC.zip to node_modules
Unzip websockify-master.zip to novnc

2.4 启动noVNC服务

cd C:\Users\noVNC\node_modules\novnc\websockify-master\other\js
node websockify.js --web C:\Users\noVNC\node_modules\novnc 9000 0.0.0.0:5900

websocket在9000端口监听请求

2.5 连接noVNC

直接在web网页访问:http://192.168.56.102:9000/

转载自https://blog.youkuaiyun.com/cloudvtech

三、使用noVNC暴露k8s上面的windows桌面

参考:https://kubevirt.io/user-guide/docs/latest/creating-virtual-machines/interfaces-and-networks.html

3.1 部署虚拟机:vm-windows-noVNC.yaml

metadata:
  name: windows
  namespace: vm
apiVersion: kubevirt.io/v1alpha2
kind: VirtualMachineInstance
spec:
  domain:
    resources:
      requests:
        memory: 8Gi
        cpu: 4
    devices:
      disks:
      - name: windowsdisk
        volumeName: windows
      interfaces:
      - name: default
        model: e1000 # expose e1000 NIC to the guest
        bridge: {} # connect through a bridge
        ports:
         - name: novnc
           port: 9000
  volumes:
    - name: windows
      persistentVolumeClaim:
        claimName: windows
  networks:
  - name: default
    pod: {}

3.2 定义服务

windows-novnc-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: windows
  namespace: vm
spec:
  type: NodePort
  ports:
    - port: 9000
      protocol: TCP
      nodePort: 19000
  selector:
    kubevirt.io: virt-launcher
  sessionAffinity: None

3.3 访问

可以通过nodeIP+nodePort进行访问

3.5 设置windows不休眠

电源

显示器

磁盘

显示

转载自https://blog.youkuaiyun.com/cloudvtech

 

 

 

 

 

 

NoVNC(Client)+TigerVNC(Server)搭建流程 阅读详情

相关推荐

从零构建网页虚拟机:基于QEMU/KVM与noVNC的在线交互桌面实践

虚拟化技术通过软件模拟计算机硬件环境,允许在单一物理主机上运行多个独立的操作系统实例。其核心原理在于利用CPU硬件辅助虚拟化(如Intel VT-x/AMD-V)和内存管理单元,实现对处理器、内存和I/O设备的隔离与共享。这项技术为云计算、资源隔离和开发测试环境提供了基础支撑,极大地提升了硬件利用率和部署灵活性。在Web技术领域,通过将VNC等远程桌面协议与HTML5的WebSocket相结合,使得在浏览器中直接访问和操作远程虚拟机成为可能。本文聚焦于如何整合QEMU/KVM虚拟化后端与noVNC网页客户端

weixin_30274627的博客 403

windows通过浏览器访问noVNC(基于web的远程桌面)

VNC (Virtual Network Console)是虚拟网络控制台的缩写,分为server端和client端两部分,分别部署完成后在server端简单的配置即可使用,基于TCP的通信。noVNC项目是通过取消VNC Client的安装,直接通过浏览器访问noVNC,然后由noVNC间接访问VNC server来达到client web化。

weixin_58448088的博客 1万+

websockify:Websockify是一个WebSocket到TCP代理桥。 这允许浏览器连接到任何应用程序服务器服务。 Python,C,Node.js和Ruby中的实现

websockify:WebSockets支持任何应用程序/服务器 websockify以前的名称为wsproxy,是项目的一部分。 在最基本的层次上,websockify只是将WebSockets流量转换为普通的套接字流量。 Websockify接受WebSockets握手,对其进行解析,然后开始在两个方向上在客户端和目标之间转发流量。 新闻/帮助/联系方式 重要的提交,公告和新闻发布到 如果您是websockify开发人员/集成商/用户(或希望成为),请加入 错误和功能请求可以通过提交。 如果您想为websockify你可以捐赠一个伟大的非营利组织如表示感谢:, ,,,,等,请鸣叫如果你这样做。 WebSockets二进制数据 从websockify 0.5.0开始,仅支持HyBi / IETF 6455 WebSocket协议。 不支持较旧的Base64编码数据格式。 加密的WebSocket连接(wss://) 要使用WebSocket'wss://'URI方案对流量进行加密,您需要生成证书和密钥以供Websockify加载。 默认情况下,Websockify加载证书

【noVNC】使用noVNC实现浏览器网页访问vnc(基于web的远程桌面)

vnc novnc

Best_lgx的博客 4万+

websockify_of_c

websockify_of_c一个websocket转tcp的proxy,很好用

图像相似度的评价指标 : FID(Fréchet Inception Distance)

FID(Fréchet Inception Distance) 是用来计算真实图像与生成图像的特征向量间距离的一种度量。如果FID值越小,则相似程度越高。最好情况即是FID=0,两个图像相同。 实际计算: 参考链接:https://machinelearningmastery.com/how-to-implement-the-frechet-inception-distance-fid-from-scratch/ # example of calculating the frechet inceptio

weixin_43723625的博客 1万+

RancherVM完全解析:如何将KVM虚拟机打包成Docker容器并在Kubernetes上大规模运行

RancherVM 是一个开源项目,它把 **KVM 虚拟机** 打包成标准的 **Docker 容器** 镜像,再借助 **Kubernetes** 的 CRD(自定义资源)在集群上声明式地创建、调度和迁移虚拟机,真正做到"像管理容器一样管理虚拟机",并支持大规模运行。🐳 ## RancherVM 是什么?解决了什么问题? 传统上,虚拟机(VM)和容器是两套管理体系:VM 靠 libvir

gitblog_00773的博客 312

主流双目相机技术参数横向评测:从ZED到INDEMIND的深度解析

本文对主流双目相机进行了深度横向评测,涵盖ZED、Bumblebee、Leap Motion、DUO 3D及INDEMIND等国内外产品。文章详细解析了分辨率、帧率、视场角、基线等核心参数,并结合科研、机器人导航、无人机、工业检测等典型应用场景,提供了实战选型指南,帮助读者根据具体需求挑选最合适的双目视觉解决方案。

weixin_29212867的博客 640

kotlinx-coroutines-play-services 实战指南:用 Kotlin 协程无缝桥接 Google Play Services Tasks API

[integration/kotlinx-coroutines-play-services](https://link.gitcode.com/i/5ba29ceae9b1fa867d85533cd3dfc11f) 是 kotlinx.coroutines 仓库中的官方集成模块,它为 Google Play Services(含 Firebase 全家桶)基于回调的 [Tasks API](htt

gitblog_00980的博客 809

STM32+ESP8266接入OneNet物联网平台全流程

MQTT协议是物联网设备与云平台通信的主流轻量级消息传输标准,其发布/订阅模型天然适配嵌入式资源受限场景;OneJSON作为中国移动OneNet平台定制的数据格式,在标准JSON基础上精简Schema、降低解析开销,显著提升STM32等MCU的处理效率。该技术组合兼顾安全性、低功耗与工程可量产性,广泛应用于环境监测、智能仪表、工业传感器等远程数据采集系统。实际落地需协同完成云平台物模型定义、Token动态认证、MQTT Topic严格构造、AT指令可靠交互及单总线传感器数据融合等关键环节。本文以DS18B2

u5v6w7的博客 1119

考试遇到 Assistant API 考点时,该掌握哪些要点?

【摘要】聚焦阿里云大模型 ACP 认证中智能体 Assistant API 考点,我结合自学认证成功经验,分享复习攻略。先解析 assistants、threads 等五个核心组件作用与关系,点明各组件支持及不支持的方法,最后给出计算 Python 代码调用大模型次数的思路,助力考生攻克考点、顺利拿证 。

davidkorhenn的博客 494

noVNC终极指南:如何在浏览器中轻松实现远程桌面访问

noVNC是一个基于HTML5的VNC客户端库和应用程序,让您能够在任何现代浏览器中直接访问远程桌面,无需安装任何插件或软件。无论您是系统管理员、开发人员还是普通用户,noVNC都能为您提供简单快捷的远程访问解决方案。本文将为您详细介绍noVNC的核心功能、配置方法以及最佳实践,帮助您快速上手这一强大的远程桌面工具。 ## 🔍 为什么需要浏览器远程桌面? 在日常工作和学习中,我们经常需要远程

gitblog_01039的博客 436

Globus 数据下载

Globus 大数据下载流程~

weixin_43978558的博客 6617

如何在Docker容器中完整运行Windows系统:实战指南与架构解析

将完整的Windows操作系统运行在Docker容器中,这一看似不可能的技术挑战如今已成为现实。Dockur/Windows项目通过创新的虚拟化技术,实现了在容器环境中运行从Windows 2000到Windows 11的全系列操作系统。本文将深入解析这一技术的实现原理、部署方法以及实际应用场景,为开发者和技术爱好者提供完整的实战指南。 ## 技术挑战与解决方案 ### 传统虚拟化的局限性

gitblog_00793的博客 424

通俗易懂的图解二叉搜索树、AVL树和红黑树

搜索是一种很常见的需求,当数据较多时,如何找到目标对象时,即需要搜索查找。 那么如何快速找到目标呢,最朴素的思想就是暴力查找,一个一个对比。 显然,当数据量增大时,我们需要优化查找方法获取更快的查找速度,我们可以通过维护一个有序数组,从而实现二分查找,查找速度从O(n)降为O(longn)。 但是数组并不便于插入和删除,链表便成为了最好的选择。 既然是采用二分查找,那么不如直接按照查找的步骤维护一种数据结构,于是二叉搜索树出现了。 二叉搜索树的性质为: 若左子树不为空,则左子树上所有节点值都小于根结点值;

暗色光的博客 758

YOLOv8独家原创改进:原创自研 | 创新自研CPMS注意力,多尺度通道注意力具+多尺度深度可分离卷积空间注意力,全面升级CBAM

自研CPMS,多尺度通道注意力具+多尺度深度可分离卷积空间注意力,全面升级CBAM

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 3794

网页版VNC

NoVNC以Web方式交付VNC远程连接的方法noVNC是一个 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,这篇文章主要介绍了NoVNC以Web方式交付VNC远程连接的方法,感兴趣的朋友一起看看吧一、noVNC是什么。

gentle John 2997

通俗易懂的Harris 角点检测

点击上方“3D视觉工坊”,选择“星标”干货第一时间送达Harris 角点检测 认为特征点具有局部差异性。如何描述“特征点具有局部差异性”:以每一个点为中心,取一个窗口,窗口大小为5*5...

3D视觉工坊 1472

轻量级部署macOS系统:容器化技术实现跨平台效率提升

在数字化转型加速的今天,开发者和企业对多环境测试、跨平台兼容的需求日益迫切。传统虚拟机方案面临资源占用高、部署流程复杂、跨平台兼容性差等痛点,而**容器化macOS技术**通过将完整的苹果系统封装到Docker容器中,实现了在Linux/Windows设备上的低门槛部署,同时保持接近原生的性能体验。本文将从核心价值、环境准备、多场景部署、实战案例、技术原理到注意事项,全面解析这一创新方案如何为开发

gitblog_00366的博客 353

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

实战noVNC全过程操作(包含遇到的问题和解决)

为了公司项目服务系统的售后服务轻松、远程操控方便,使用VNC是一个很好的选择。

Da_zhenzai的博客 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

noVNC使用与介绍

noVNC使用与介绍

weixin_43724848的博客 3702

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NoVNC—以Web方式交付VNC远程连接

https://github.com/novnc/noVNC 一、noVNC是什么 noVNC是一个 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,noVNC 被普遍用在各大云计算、虚拟机控制面板中,比如 OpenStack Dashboard 和 OpenNebula Sunstone 都用的是 noVNC。 noVNC采用...

linux丶晨星 2万+

Linux noVNC远程桌面(xfce)部署

它功能丰富、可高度定制,并提供用户友好的图形界面,旨在为 Linux 和类 UNIX 操作系统用户提供先进的用户体验。它为用户提供了一个熟悉、高效的桌面环境,结合了强大的功能和简洁的界面。MATE 是一个基于传统 GNOME 2 的轻量级桌面环境,旨在保留经典的桌面体验,提供简洁易用的界面,适合喜欢传统桌面风格的用户。noVNC 是一个基于 HTML5 的 VNC 客户端,它允许你直接通过浏览器访问 VNC 会话,无需额外的客户端软件。系统会提示你输入密码,确保选择一个安全的密码。

weixin_43262264的博客 4508

【noVNC】使用noVNC实现浏览器远程VNC(基于web的远程桌面)

VNC websockify

Best_lgx的博客 4592

k8s中实现pod的vnc控制台

在k8s中,我们想要操作pod,经常会通过kubectl exec -it podName bash的方式来进行操作 那如果我们需要实现一个vnc控制台,需要怎么做呢?例如下图这样的控制台 首先在docker层的话,我们是可以通过docker 提供的api来实现 那在k8s层的话,我没有看到有这样的api提供,但是有经验的开发人员肯定知道,获取一个wss连接,就可以实现这样的VNC。通过k8s命令行的debug,我们可以看到,最终是一个POST请求 拿到这个请求,我尝试到postman中,去掉前缀ht

RayPick的博客 1475

通过 noVNC 访问 kubevirt中的 vmi

目的 以 VNC 的方法连接到 VMI 启用 noNVC 方法, 利用网页就可以对 VMI 进行访问 kubevirt vnc 原理 kubernetes 启动 POD ( virt-launcher ) 启动 VMI virt-launcher 定义了 VMI 的硬件,信息, 如 CPU, 内存,中断, 接口等, 同时也定义了 VNC 的使用方式 virt-launcher 使用了参数 -...

Terry Tsang 1748
上一篇: Kubernetes生产实践系列之二:在Kubernetes使用kubevirt运行管理Ubuntu/Windows桌面操作系统
下一篇: Kubernetes生产实践系列之四:在Kubernetes运行带Desktop的Ubuntu容器
cloudvtech
博客等级 码龄9年 533粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值