微信
手机版
网站地图

马凡舒,在Kubernetes中使用 kubevirt 以容器方法运转虚拟机,西安地铁

2019-03-30 09:26:39 投稿人 : admin 围观 : 565 次 0 评论
  • 1.虚拟机 & 容器
  • 2.什么是kubevirt
  • 2.1 kubevirt架构
  • 2.2 虚拟机创立流程
  • 2.3 虚拟机存储
  • 2.4 虚拟机网络
  • 3. kubevirt布置
  • 4. 创立虚拟机

1.容器 VS 虚拟机

跟着Docker和Kubernetes生态圈的开展,云核算范畴对容器的爱好到达了疯狂的程度。 容器技能为运用程序供给了阻隔的作业空间,每个容器内都包括一个独享的完好用户环境空间, 容器内的变化不会影响其他容器的作业环境。由于容器之间同享同一个体系内核,当同一个库被多个容器运用时, 内存的运用功率会得到进步。依据物理主机操作体系内核的,那就意味着关于不同内核或许操作体系需岩忍者日志求的运用是不可能布置在一起的。

虚拟化技能则是供给了一个完好的虚拟机,为用户供给了不依赖于宿主机内核的作业环境。 对goodwd于从物理效劳器过渡到虚拟效劳器是一个很天然的进程,从用户运用上并没有什么差异。 容器与虚拟机当时看来并不是一个非此即彼的联系,至于选用那种办法去作业运用需求依据详细需求去决议。 在这里笔者并不评论这个问题,且笔者仅是容器效劳的入门玩家,内容若有不精确之处还望指正。

kubernetes供给了较灵敏的容器调度和办理能力,那么虚拟机能否像容器相同被k8s办理调度, 充分运用k8s的毛病发现,翻滚晋级等办理机制呢。 在Linux操作体系中虚拟机本质上便是一个操作体系进程应该是能够作业在容器内部的。

现在Redhat开源的kubevirt和Mirantis开源的virtlet都供给了以容器办法作业虚拟机的计划, 至于两者之间的差异,能够看下这篇Mirantis的 blog(https://www.mirantis.com/blog/kubevirt-vs-virtlet-comparison-better/)。

本文将详细介绍kubevirt项目怎么完结和作业容器化的虚拟机。

2. 什么是 kubevirt

kubevirt 是 Redhat 开源的以容器办法作业虚拟机的项目,以 k8s add-on办法,运用 k8s CRD 为添加资源类型Virtua891ualMachineInstance(VMI), 运用容器的image registry去创立虚拟机并供给VM生命周期办理。 CRD的办法是的kubevirt对虚拟机的办理不必局限于pod办理接口,可是也无法运用pod的RS DS Deployment等办理能力,也意味着 kubevirt假如想要运用pod办理能力,要自主去完结,现在kubevirt完结了相似RS的功用。 kubevirt现在支撑的runtime是docker和runv,本文中实践运用的是docker。

2.1 kubevirt 架构

从kubevirt架构看怎么创立虚拟机,Kubevirt架构如图所示,由4部分组件组成。从架构图看出kubevirt创立虚拟机的中心便是创立了一个特别的pod virt-launcher ,其间的子进程包括libvirt和qemu。

做过openstack nova 项目的朋友应该比较习惯于一台宿主机中作业一马凡舒,在Kubernetes中运用 kubevirt 以容器办法作业虚拟机,西安地铁个libvirtd后台进程,kubevirt中选用每个pod中一个libvirt进程是去中心化的办法,来防止由于 libvirtd 效劳反常导致一切的虚拟机无法办理。


在Kubernetes中运用 kubevirt 以容器办法作业虚拟机


  • virt-api
  • kubevirt API效劳,kubevirt是以CRD的办法作业的,virt-api供给了自界说的api恳求处理,如vnc console start vm stop vm等。

  • virt-controller
  • 与k8s api-server通讯监控VMI资源创立删去等状况
  • 依据VMI界说创立virt-launcherpod,该pod中将会作业虚拟机
  • 监控pod状况,并随之更新VMI状况
  • 监控符号为”kubevirt.io/schedulable” node heartbeat
  • virt-handler
  • 作业在kubelet的node上定时更新heartbeat,并符号”kubevirt.io/schedulable”
  • 监听在k8s apiserver当发现VMI被符号得nodeName与本身node匹配时,担任虚拟机的生命周期办理
  • virt-launcher
  • 以pod办法作业
  • 依据VMI界说生成虚拟机模板,经过libvirt API创立虚拟机
  • 每个虚拟时机对应敌对的libvirtd
  • 与libvirt通讯供给虚拟机生命周期办理

2.2 虚拟机创立流程

  1. client 发送创立VMI指令到达 k8s API server.
  2. K8S API 创立VMI 目标
  3. virt-controller监听到VMI创立时,依据VMI spec生成pod spec文件,创立pods
  4. k8s调度创立pods
  5. virt-controller监听到pods创立后,依据pods的调度50岁侯勇低沉三婚node,更新VMI 的nodeName
  6. virt-handler监听到VMI nodeName与本身节点匹配后,与pod内的virt-launcher通讯,virt-laucher创立虚拟机,并担任虚拟机生命周期办理
Client K8s API VMI CRD Virt Controller VMI Handler
-------------------------- ----------- ------- ----------------------- ----------
listen <----------- WATCH /virtualmachines
listen <----------------------------------- WATCH /virtualmachines
| |
POST /virtualmachines ---> validate | |
create ---> VMI ---> observe --------------> observe
| | v v
validate <--------- POST /pods defineVMI
create | | |
| | | |
schedPod ---------> observe |
| | v |
validate <--------- PUT /virtualmachines |
update ---> VMI ---------------------------> observe
| | | launchVMI
| | | |
: : : :
| | | |
DELETE /virtualmachines -> validate | | |
delete ----> * ---------------------------> observe
| | shutdownVMI
| | |
: : :

2.3 虚拟机存储

kubevirt现在供给了多种办法的虚拟机的磁盘:

  • reg火蓝刀锋之海龙王istryDisk 可界说image来创立作为虚拟机的root disk。 virt-controller会在pod界说中创立registryVolume的container,container中的entry效劳担任 将spec.volumes.registryDisk.image转化为qcow2格局,途径为po马凡舒,在Kubernetes中运用 kubevirt 以容器办法作业虚拟机,西安地铁d根目录
  • cloudInitNoCloud
  • 对虚拟机运用cloudinit做初始化,相似与nova中的configdrive,会依据spec.v名星组成olumes.cloudInitNoCloud 创立包括i妖亦非妖so文件,包括 meta-data 和 user-data。
  • emptyDisk
  • 创立空的qcow2格局image挂载给虚拟机
  • PVC
  • 上述几种disk都对错耐久化的,随之pod的生命周期消亡,PVC是k8s供给的耐久化存储。现在kubevirt运用pvc挂载办法都是文件体系办法挂载, PVC首要被挂载在virt-laucher pod中, 且需求存在名称为/disk/*.img的文件,才挂载给虚拟机。 file办法虚拟化办法对虚拟机磁盘存储功能有很大的影响。
  • 了解openstack的朋友应该也了解nova-compute中怎么运用ceph rbd image的,本质上是libvirt运用librbd以network办法 将rbd image长途改在给虚拟机。而kubevirt中将POD ip移交给了虚拟机,那将意味着pod内的libvirt效劳其实是无法直接运用network disk的。 要么添加网络署理转发即经过host来与网络设备通讯,要么便是选用k8s volumeMount:block feature来完结。
  • kubevirt社区有PR现已完结了以Block的办法去运用是rbd image, 笔者手动merge并测验经过。 本质是运用了kernel rbd.ko,首要将rbd image map到host,block的mount办法将不再以文件体系办法去挂载/dev/rbdx,而是为作为原始设备给pod,而pod内的libvirt就能够block办法将rbd image作为 磁盘挂载给虚拟机。
  • 相较于PVC先格局化为文件体系并有必要创立disk.img文件的运用办法,明显rbd image 以block device直接作为块设备给虚张甲张乙张丙拟机少了本地文件体系层 单从存储功率讲都能进步不少。徐薇涵至于librbd和rbd.ko的功能本文没有比照测验,有时间再弥补。
  • k8s PVC后续版别应该也能够供给block mode办法的mount。
  • dataVolume
  • dataVolume是kubevirt下的一个子项目containerized-data-importer(CDI), 也是以CDR的办法添加DataVolumeresource。 能够看成是从PVC和registryDisk衍生出来的,上面提过PVC运用是比较费事的,不只需求PVC还需求创立disk.img, dataVolume其实将这个进程简化了,主动化的将disk.img创立在PVC中。 创立DataVolume是能够界说source即image/data来历能够是http或许s3的URL,CDI controller会将 主动将image转化并复制到PVC文件体系/disk/

2.4 虚拟机网络

kubevirt虚拟机网络运用的是pod网络也便是说,虚拟网络原生与pod之间是打通的。虚拟机详细的网络如图所示, virt-launcher pod网络的网卡不再挂有pod ip,而是作为虚拟机的虚拟网卡的与外部网络通讯的交代物理网卡。 那么虚拟机是怎么拿到pod的ip的呢,virt-launcher完结了简略的单ip dhcp server,便是需求虚拟机中发动dhclient,virt-launcher 效劳会分配给虚拟机。

在Kubernetes中运用 kubevirt 以容器办法作业虚拟机


运用指令kubectl exec $virt-launch-pod -c compute -- brctl show能够看到bridge信息。 其间eth0便是pod与host网络通讯的veth peer网卡。也能够经过virsh dumpxml指令检查虚拟机的xml界说文件。

3.布置 kubevirt

3.1 在 kubernets 中布置 kubevirt

首要需求马凡舒,在Kubernetes中运用 kubevirt 以容器办法作业虚拟机,西安地铁k8s环境,本文中运用的是v1.10.5版别,kubevirt挑选v0.8.0,调用如下指令布置kubevirt:

$ e丁鑫的游戏配备xport VERSION=v0.8.0
$ kubectl create \
-f https://github.com/kubevirt/kubevirt/releases/download/$VERSION/kubevirt.yaml

kubevirt.yaml 中界说了 RBAC 相关认证,默许办理效劳都创立再 kube-system namespace中,能够经过以下指令检查资源,以及效劳布置状况。当看到pods 悉数创立成功后,经过kubectl get vmis来检测效劳是否可用。

 kubectl get all -n kube-system -l kubevirt.io
NAME RE许哲珮ADY STATUS RESTARTS雷斯卿 AGE
pod/virt-api-54cc86ff87-9xt8s 1/1 Running 0 14d
pod/virt-api-54cc86ff马凡舒,在Kubernetes中运用 kubevirt 以容器办法作业虚拟机,西安地铁87-xvjg4 1/1 Running 0 14d
pod/virt-controller-769db5f6bf-2wgr4 1/1 Running 0 13d
pod/virt-controller-769db5f6bf-xwgks 1/1 Running 0 13d
pod/virt-handler-gpn6b 1/1 Running 0 2h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/virt-api ClusterIP 172.30.7.81 443/TCP 16d
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/virt-handler 1 1 1 1 1 16d
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploymen马凡舒,在Kubernetes中运用 kubevirt 以容器办法作业虚拟机,西安地铁t.apps/virt-api 2 2 2 2 16d
deployment.apps/virt-controller 2 2 2 2 16d
NAME DE翱特定损体系SIRED CURRENT READY AGE
replicaset.apps/virt-api-54cc86ff87 2 2 2 14d
replicaset.apps/virt-api-645f74c7fc 0 0 0 16d
replicaset.周雄斌apps/virt-controller-658bf69f57 0 0 0 16d
replicaset.apps/virt-controller-769db5f6bf 2 2 2 14d

3.2 在 OpenShift 中布置 kubevirt

Kubevirt 在 openshift 的布置是相似的,仅有不同的是需求为 kubevirt service account 添加 openshift 权限。在需求运用 block volumemount 时,openshift需求修正 origin-node 的配置文件添加 feature-gates “BlockVolume=true”

oc adm policy add-scc-to-user privileged system:serviceaccount:kube-system:kubevirt-privileged
oc adm policy add-scc-to-user privileged system:serviceaccount:kube-system:kubevirt-controller
oc adm policy add-scc-to-user privileged system:serviceaccount:kube-system:kubevirt-infra
oc a高艺允恩dm policy add-scc-to-user privileged system:serviceaccount:kube-system:kubevirt-apiserver

4. 运用 kubevirt 创立虚拟机

4.1 预备虚拟机根磁盘

在kubevirt存储一节中介绍了kubevirt支撑的存储类型,其间registryDisk和PVC办法能够为作为预装操作体系的虚拟机root disk。

(1)regi逍遥小神医金富有stryDisk 办法

kubevirt供给了registryDisk的base docker image registry-disk-v1alpha

1 . 预备raw或许qcow2格局的虚拟机镜像,例如Windows---server-2012-datacenter-64bit-cn-syspreped吴尉文---2018-01-15.qcow2

2 . 创立Dockerfile

FROM kubevirt/registry-disk-v1alpha
MAINTAINER "MinMin"
# Add alpine image
COPY Windows---server-2012-datacenter-64bit-cn-syspreped---2018-01-15.qcow2 /disk/windows2012dc.img

3 . 创立image

docker build -t windows2012dc:latest ./
docker push windows2012dc:latest

4 . 更新vmi yaml文件中image

将vmi文件中的image更新为新创立的image

kind: VirtualMachineInstance
...
spec:
domain:
devices:
disks:
- disk:
bus: virtio
nam张艺洲e: registrydisk
volumeName: registryvolume
...
- name: registryvolume
registryDisk:
image: windows2012dc:latest

(2)PVC办法

PVC是k8s供给的耐久化存储办法,当需求对虚拟机改变耐久化存储时有必要要选用这种办法。笔者在写本文时,kubevirt还未支撑blockmod马凡舒,在Kubernetes中运用 kubevirt 以容器办法作业虚拟机,西安地铁e PVC,此章节 仅介绍file办法的。kubevirt中创立虚拟机是以pod空间中的/disk/目录下,那么意味着需求将PVC完结进行文件体系格局化,并创立disk/目录将 虚拟机root disk image复制至disk目录中。 这个进程能够手动完结比较冗杂,kubevirt供给了新的项目kubevirt/containerized-data-importer主动化这个进程,可参阅示例 vm-alpine-datavolume.yaml)经过DataVolume.spec.source界说虚拟操作体系的image途径。

4.2 创立 vmi 目标

自己创立vmi的yaml文件,或许从github.com/kubevirt/kubevirt 项目中的cluster/examples 下的 vmi-flavor-small.yaml 文件去创立虚拟机,创立完结后能够 运用ssh登陆检查虚拟机或许运用virtctl console 和 virtctl vnc来登陆虚拟机。

# kubectl create -f vmi-flavor-small.yaml
# kubectl get vmis
NAME AGE
vmi-flavor-small 15h
vmi_pvc-windows 14h
# kubectl get pods
virt-launcher-vmi-flavor智小楠-small-7m2cj 2/2 Running 0 2h
virt-launcher-vmi-pvc马凡舒,在Kubernetes中运用 kubevirt 以容器办法作业虚拟机,西安地铁-windows-wvg5c 1/1 Running 0 14d


相关文章

  • 养生堂天然维生素e,玄幻小说完本-10款大厨创新菜品
    养生堂天然维生素e,玄幻小说完本-10款大厨创新菜品

    每个人手上或许或多或少会有几张银行卡,有没有那么几张卡是其时有用,之后就没有在用过的。假如长时刻的不适用这张银行卡有没有去管,会呈现什么状况呢?尽管现在规则不收取银行卡管理费用魔法妈妈故事妙妙屋了,可是假如你在同银行有多张银行卡的君顿花园酒...

    2019-11-16 11:44:58
  • 猎鹰1949,京东快递-10款大厨创新菜品
    猎鹰1949,京东快递-10款大厨创新菜品

    对许多孕妈来说,妊娠十月,既意层组词味着等候,更蕴藏着严峻。一旦快到分昆山艾瑞思自动化科技有限公司娩日,严峻焦虑感更为激烈。本年31岁,来自萧山的小徐也是这么想的,但实际却没那么遂愿。就在怀孕37周的时分,小徐的凡克猫童装产检B超显现,她的...

    2019-11-16 11:44:50
  • 侯府商女,天行健-10款大厨创新菜品
    侯府商女,天行健-10款大厨创新菜品

    正经诗意的新中式廖振宇之家,侯府商女,天行健-10款大厨立异菜品银杏侯府商女,天行健-10款大厨立异菜品叶的墙纸,看着真享用!今日小编要跟我们来共享的新房装修事例是一套正经诗意的新中撸插式风m37y30装修的三居室,白曌儿俭朴、温润的木色达...

    2019-11-16 11:42:50
  • 豆腐怎么做好吃,更年期综合症的表现-10款大厨创新菜品
    豆腐怎么做好吃,更年期综合症的表现-10款大厨创新菜品

    国插她庆档质量国漫《美食大冒险之英豪烩》今日发布了影片的音乐制造特辑豆腐怎么做好吃,更年期综合症的体现-10款大厨立异菜品,展现了影片在音乐和音效上的精工细作。影片的伴奏录音在英金博集团董事长王金来国艾比路1号录音棚进行,这儿也是《星球大战...

    2019-11-15 09:59:48
  • 庐江天气,什么解酒最快-10款大厨创新菜品
    庐江天气,什么解酒最快-10款大厨创新菜品

    换内衣 科幻电影《漂泊地球》中,太阳寿数走向完结,面对行将发作的毁灭性爆破,人类带着地球逃离太阳,寻觅下一个“生命之源”。太阳真的会爆破吗?众多国际间还有无栖身之地?近来,广东...

    2019-11-15 09:58:52
  • 李兰迪,热水器-10款大厨创新菜品
    李兰迪,热水器-10款大厨创新菜品

    时刻:2019年10月29日 星期二 重要新闻 昨夜,PE史上经典一役诞生:为何是 ? 历时6个多月,400亿“股权之争”终究花落。 出资界10月28日晚间音讯,格力集团...

    2019-11-15 09:57:57
  • 赚钱,征兵网-10款大厨创新菜品
    赚钱,征兵网-10款大厨创新菜品

    张雅木 系列编号 赚钱,征兵网-10款大厨立异菜品 人民网北兰菊花京10月21日电 2016年36斤黄鳝11月,做租车生意的李某性论题将自己名下的一辆商务车出租给蓝某,因为租金适宜...

    2019-11-13 03:00:05
  • 向佑,抽签-10款大厨创新菜品
    向佑,抽签-10款大厨创新菜品

    艹立句 关于一名鼠标控来说,鼠标永远是不够用的,最近频频的出差,家里那几只有线向佑,抽签-10款大厨立异菜品鼠标真实不便利,我觉着很有必要再入一只无线鼠标,最好是支撑双模衔接...

    2019-11-13 02:56:59
  • 唱吧下载,668-10款大厨创新菜品
    唱吧下载,668-10款大厨创新菜品

    夸姣是每一个人巴望并寻求的东西。社会越前进人类好像越来越感觉不夸姣,由于咱们往往并不把高兴日子当成最大的成功,而是把财富或许权利作为夸姣的衡量标准。 财富和权利是相对的,肯定...

    2019-11-13 02:54:53
  • 鹿晗微博,电影网-10款大厨创新菜品
    鹿晗微博,电影网-10款大厨创新菜品

    于生一 寻求平和 传递友谊 ——第七届国际武士运动会在湖北武汉隆重开幕 什么是“国际武士运动会”? 国际武士运动会(英文:Military World Games)是一个综合性...

    2019-11-12 03:05:39
标签列表