Kubernetes生产实践系列之二:在Kubernetes使用kubevirt运行管理Ubuntu/Windows桌面操作系统

k8s集群kubevirt创建虚拟机过程 在虚拟机创建之前,需要创建一个虚拟机定义,它描述了虚拟机的配置和规格。创建VM对象,并同步创建DataVolume/PVC,从镜像仓库中拉取系统模板镜像拷贝至目标调度主机,通过调度、IP分配后生成VMI以及管理VM的Launcher Pod从而启动供业务使用的VM。kubevirt以CRD的形式将VM管理接口接入到kubernetes中,通过一个pod去使用libvirtd管理VM的方式,实现pod与VM的一一对应,做到如同容器一般去管理虚拟机,并且做到与容器一样的资源管理、调度规划。 阅读详情

一、前言

在容器化部署的云原生环境中,我们还是在某些情况下需要虚拟机来解决一些特殊的问题,最为直接的例子就是需要Desktop来运行一些带GUI的程序。这里尝试在Kubernetes运行Ubuntu和Windows Desktop,并且在里面运行浏览器,这可以满足某些研发或者测试人员在内部安全的测试一些系统的浏览器效果。

虚拟机的运行时还是使用qemu/kvm,而管理虚拟机的运行时使用kubevirt,它的安装方法请参见《kubernetes系列之十九:配置kubernetes使用kubevirt管理虚拟机》。当然,一般的公有云供应商在虚拟机环境是不支持嵌套虚拟化的,所以也没法使用kubevirt,所以这个方案是在自建机房基于物理机集群的Kubernetes上部署实施的。

在使用Kubernetes管理虚拟机的时候,需要先制作虚拟机镜像,然后使用Kubernetes节点的本地存储或者网络存储来存储镜像。

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

 

二、使用Kubernetes部署管理Ubuntu桌面系统

2.1 制作镜像

首先使用Virtualbox安装一个Ubuntu桌面系统,随后开机安装openssh-server和remote-viewer。关机之后找到镜像ububtu.vdi,上传到某个Kubernetes节点,并且使用qemu-img将vdi格式转成raw格式且赋予把owner权限给qemu(107) user和group:

qemu-img convert -f vdi -O raw ubuntu.vdi ubuntu.img

mv ubuntu.img disk.img; chown 107.107 disk.img 

mkdir /home/img; mv disk.img /home/img 

更多选择可以参考kubevirt的这个手册。

2.2 创建host PV和PVC

local-volumes.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: ubuntu
  labels:
    type: local
    app: ubuntu
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /home/ubuntu-img
  persistentVolumeReclaimPolicy: Recycle

pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ubuntu
  namespace: vm
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi

kubectl get pv | grep ubuntu

ubuntu                           

kubernetes安装kubevirt提供虚拟机功能(一) kubevirt kubernetes 虚拟机 阅读详情

相关推荐

工作小记系列2:Kubevirt简介

Kubevirt 是Redhat开源的以容器方式运行虚拟机的项目,以k8s add-on方式,利用k8s CRD增加一种自定义资源类型:VirtualMachineInstance(VMI), 使用容器的image registry去创建虚拟机并提供VM生命周期管理。

sxmatch的技术人生 1845

Kubevirt实战踩坑记:从零在Ubuntu K8s集群部署到成功启动第一台Win10虚拟机

本文详细记录了在Ubuntu K8s集群中使用Kubevirt部署并成功启动Windows 10虚拟机的实战经验。从硬件虚拟化检测、Windows镜像处理到虚拟机定义和网络配置,涵盖了部署过程中的关键步骤和常见问题解决方案,为在Kubernetes环境中运行虚拟机提供了实用指南。

weixin_28741413的博客 213

Meltdown与Spectre硬件漏洞防护实战:KPTI、IBPB与Retpoline详解

现代CPU的推测执行机制在提升性能的同时,引入了Meltdown(熔断)和Spectre(幽灵)等硬件级旁路攻击风险。这类漏洞不依赖软件缺陷,而是利用分支预测、缓存时序等微架构特性,绕过内存隔离窃取内核数据。其技术本质涉及CPU流水线、TLB/分支预测器行为及页表管理机制,防护需软硬协同:内核层通过KPTI实现地址空间隔离,IBPB阻断间接分支污染,Retpoline重写高危调用模式;固件层依赖微码更新修正硬件逻辑。该方案广泛应用于Linux服务器加固、Kubernetes容器运行时防护及SQL Serve

weixin_30905133的博客 439

ZSvirt轻量级虚拟化平台:本地部署、批量管理与API调用实践

虚拟化技术是现代IT基础设施的核心,从底层CPU虚拟化到资源池统一管理,涉及虚拟机生命周期、镜像格式、网络模式等关键概念。轻量级开源虚拟化平台通过简化部署流程,将传统手动创建虚拟机的方式转化为HTTP API驱动,大幅提升自动化运维效率。这类平台通常基于KVM/QEMU构建,支持批量创建、启停、删除等操作,适合开发测试环境、CI/CD动态调度及学习二次开发。本文以ZSvirt为例,介绍如何在一台Linux服务器上完成环境准备、启动服务、验证基础功能,并通过HTTP API实现批量任务管理,为运维和开发人员提

weixin_34200628的博客 510

Agent按需算力:虚拟机模板与自动释放实践

虚拟化技术在同一物理主机上隔离多个独立环境,而资源调度让计算资源能够按需分配与回收。通过虚拟机模板固化Agent的完整运行环境,配合按需启动和自动释放机制,可以有效规避常驻虚拟机长期占用CPU与内存的浪费。该方案适用于Agent开发测试、定时爬虫任务、自动化流程以及小规模API服务等场景,尤其适合不愿直接上Kubernetes的本地部署。基于KVM/QEMU或VirtualBox,开发者只需维护一套黄金镜像,即可实现任务到来时快速拉起、任务结束后彻底销毁的弹性算力供给。整套流程涵盖模板制作、资源限制、批量调

weixin_34268843的博客 362

KVM虚拟化技术栈与virt-manager实战指南

虚拟化技术通过抽象硬件资源实现多系统并行运行,其核心原理是利用CPU硬件虚拟化扩展(如Intel VT-x/AMD-V)和内存管理单元(MMU)实现资源隔离。KVM作为Linux内核模块提供底层虚拟化支持,结合QEMU的设备模拟能力和libvirt的管理抽象,构建了完整的虚拟化技术栈。这种架构在云计算、开发测试和服务器整合等场景中具有重要价值,能够显著提高硬件利用率和运维效率。通过virt-manager图形工具,用户可以直观地管理KVM虚拟机,完成从环境准备、虚拟机创建到性能优化的全生命周期操作,特别适合

weixin_30719711的博客 706

GD32单片机开发环境搭建(Keil5安装)

1.安装MDK5 由于GD32 Keil 版本例程的工程是基于Keil MDK-ARM 5.25 uVision5 创建的,所以我在此也安装MDK5.25版本。 下载链接:https://pan.baidu.com/s/1E4tcDQvsVl0xezU3pEyJTA 提取码:s1fr 其他版本下载链接:https://cloud.tencent.com/developer/article/1605195 选择安装路径(不要装到中文路径下,避免不必要的麻烦): 用户信息随便...

fangye945a的博客 3万+

接地设计的本质:按电流类型选择物理连接方式

接地是电子系统中实现电位参考、噪声抑制与安全保护的基础技术,其核心原理在于为不同性质的电流提供可控的低阻抗返回路径。从直流到GHz频段,电流的频率特性、能量等级和持续时间决定了接地的物理实现方式——工频安全电流依赖低电阻导体,高频噪声需低感平面或磁珠衰减,ESD脉冲要求受控泄放电阻,浪涌能量则必须通过独立短路径导入大地。这种‘目的决定方式’的设计逻辑,直接关联EMC合规性、信号完整性与系统可靠性。本文聚焦PCB级与设备级工程实践,详解安全地、功能地、浪涌地与静电地的判据差异及六种典型连接策略,帮助硬件工程师

weixin_36369848的博客 258

PyTorch多机训练Loss不一致问题排查指南:基于算子级一致性验证

比较二次训练过程中所有算子的误差,定位存在一致性问题的pytorch算子

Hi20240217的博客 1157

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6728

centos7 清理缓存

一、系统环境 系统版本 CentOS Linux release 7.3.1611 (Core) 内核版本 Linux xx-user 3.10.0-514.el7.x86_64 #1 SMP 背景 服务器分配的账号是普通用户,只能执行sudo命令 二、缓存查看及基本概念 查看内存使用情况 [user01@xx-user ~]$ free -h total used free shared buff/cache availabl

sunzq55的博客 4004

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 368

【即插即用模块】Transformer篇 | MICCAI 2025 | ReLULA:Q/K双ReLU线性注意力,既轻又准!

本文介绍了一种基于线性注意力的多实例学习模块(Lin-MIL),适用于高分辨率视觉任务。该模块通过转置计算顺序和使用ReLU激活,将计算复杂度从O(n²d)降至O(nd²),同时提升特征判别性。核心创新包括Q/K双ReLU激活、可学习温度系数和数值稳定归一化。实验表明,该模块在轻量化视觉任务中优于传统线性注意力和Mamba架构。代码实现了模块化矩阵乘法,支持即插即用替换ViT自注意力层。该模块特别适合计算病理学等需要处理大量图像补丁的任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 139

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

weixin_42412049的博客 2297

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Kubernetes生产实践系列之一:Kubernetes基于RBAC的访问权限控制
下一篇: Kubernetes生产实践系列之三:使用noVNC连接在Kubernetes运行的Windows虚拟机
cloudvtech
博客等级 码龄9年 533粉丝 111原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值