一、前言
在容器化部署的云原生环境中,我们还是在某些情况下需要虚拟机来解决一些特殊的问题,最为直接的例子就是需要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管理Ubuntu与Windows桌面

本文介绍如何在Kubernetes中部署和管理Ubuntu及Windows桌面系统,包括制作虚拟机镜像、创建PersistentVolume和PersistentVolumeClaim,以及通过VNC访问虚拟机。
最低0.47元/天 解锁文章
673





