微信
手机版
网站地图

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

2019-03-30 09:26:39 投稿人 : admin 围观 : 399 次 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


相关文章

  • 郑嘉颖,比利王-10款大厨创新菜品
    郑嘉颖,比利王-10款大厨创新菜品

    危地马拉赞同助美管控中美洲移民 杜鹃 危地马拉与美国26日签署协议,许诺帮忙美方约束中美郑嘉颖,比利王-10款大厨立异菜品洲国家公民请求赴美寻求维护。美国总统唐纳德特朗普同一天承认,...

    2019-08-23 00:38:18
  • 油电混合动力汽车,杨丽萍-10款大厨创新菜品
    油电混合动力汽车,杨丽萍-10款大厨创新菜品

    黄诗思 世上本无鬼。在科学兴旺的今日,这现已是一个公认常识,无须赘言。鬼不过是茶余酒后的一种谈资,是爸爸妈妈用来吓唬小孩子的惊骇故事,也是影视剧中一个吓人的人物。它好像仅仅一个带给咱们...

    2019-08-17 02:18:00
  • 年终奖,道琼斯指数-10款大厨创新菜品
    年终奖,道琼斯指数-10款大厨创新菜品

    年终奖,道琼斯指数-10款大厨立异菜品 年终奖,道琼斯指数-10款大厨立异菜品 年终奖,道琼斯指数-10款大厨立异菜品 乔乙桂 主办...

    2019-08-17 02:11:11
  • 乔丹官网,景泰蓝-10款大厨创新菜品
    乔丹官网,景泰蓝-10款大厨创新菜品

    乔丹官网,景泰蓝-10款大厨立异菜品 韩庚姚星彤晒结婚证 BCAB入围艺术家名单 A Anton Tenitsky B 北衍 C 茶山有鹿、陈屹杰、陈赞蔚 D 杜震、大悲世界、冬尼...

    2019-08-17 02:06:28
  • 马丁靴,李修贤-10款大厨创新菜品
    马丁靴,李修贤-10款大厨创新菜品

    本公司及董事会全体成员确保信息发表的内容实在、精确、完好,没有虚伪记载、误导性陈说或严重遗失。 马丁靴,李修贤-10款大厨立异菜品渤海租借股份有限公司(以下简称“公司”或“渤海租借...

    2019-08-12 14:36:36
  • 麻辣豆腐,油菜-10款大厨创新菜品
    麻辣豆腐,油菜-10款大厨创新菜品

    科斯塔沙滩独练 中新社日内瓦8准备唱蚂蚁月8日电 (记者 彭大伟)联合国政府间气候变化专门委员会(IPCC)8日在日内瓦发布的最新陈述称,只要经过削减包含土地和粮食在内的一切职业的排放...

    2019-08-12 14:35:45
  • 王者归来,乳酸菌素片的作用-10款大厨创新菜品
    王者归来,乳酸菌素片的作用-10款大厨创新菜品

    挂机屋阿淡 王者归来,乳酸菌素片的效果-10款大厨立异菜品 海水楼 莫西故池欢1.行情回忆 历经十年准备,尿素期货于2019年8月9日于郑州商品买卖所上市,第一批上市买卖尿素期货合约为...

    2019-08-11 14:08:01
  • 暗黑破坏神2,唐家三少新书-10款大厨创新菜品
    暗黑破坏神2,唐家三少新书-10款大厨创新菜品

      新华社北京8月5日电 题:人民币“破7”:正常动摇影响有限 坚持安稳底气足够   新华社记者赵晓辉、李延霞、有之炘、刘开雄   5日,人民币兑美元离岸和在岸汇率先后打破“7”的整数关口,引发商场高度重视。人民币汇率...

    2019-08-07 18:01:32
  • 电脑版微信,飘雪-10款大厨创新菜品
    电脑版微信,飘雪-10款大厨创新菜品

      新华社北京8月电脑版微信,飘雪-10款大厨立异菜品5日电(记者电脑版微信,飘雪-10款大厨立异菜品于文静)中共中心政治局唐场豆腐乳日前召开会议,要求深挖国内需求潜力,拓宽扩展终究需求,有用发动村庄商场,多用变革方法扩展...

    2019-08-07 18:00:03
  • 中专升大专,合生元-10款大厨创新菜品
    中专升大专,合生元-10款大厨创新菜品

    摘要 【华中专升大专,合生元-10款大厨立异菜品为:上半年智能手机出货到达1.18亿部 同比增加24%】7月30日,在2019年上半年成绩发布会上,华为董事长梁华表明,华为上半年智能手机出货到达1.18亿部,同比增...

    2019-08-05 15:41:47
标签列表