《边缘云原生虚拟化研究报告2024.docx》由会员分享,可在线阅读,更多相关《边缘云原生虚拟化研究报告2024.docx(28页珍藏版)》请在课桌文档上搜索。
1、前言III1技术与需求概述11.1 虚拟机和容器11.2 OpenStack与Kubernetes11.3 融合管理的演进:K8s环境下运行虚拟机31.4 开源项目简介42技术实践92.1 生命周期管理92.2 镜像管理102.3 存储管理132.4 网络能力15免发*男L 本内,本天褶台书多2. 3B安JtH,同入开效超,Xf RF Dtaconfoiners KMUSMM 丫?Hypervlsor VSOCK SocketVirtual MachineContairwr CommandConUinrExcNamespacesContainerHypervlsor图5:KataContain
2、e1图KataCOntainer主要由由如下几部分组成:kata-agent:在虚拟机内kata-agent作为一个daemon进程运行,并拉起一个或多个容器的进程。kata-agent使用VlRTlO或VSoCK接口(QEMU在主机上暴露的s。Cket文件)在guest醐机中运行gRPC服务器。kata-runtime通过grpcf办议与kata-agent信,向kata-agen侬送管理容器的命令。该协议还用于容器和管理引擎(例如DOCkerEngine)之间传送1/0流(StdOUt,stderr,stdin)。容器内所有的执行命令和相关的10流都需要通过QEMU在宿主机暴露的Virti
3、oTerial或vs。Ck接口,当使用VlRTlo的情况下,每个虚拟机会创建一个KataContainersproxy(kata-proxy)来处理命令和10流。kata-runtime:KataContainersruntime(kata-runtime)通过QEMU/KVM技术创建了一种轻量型的虚拟机,兼容OCIruntimespecification,33寺KUbemeteS的ContainerRuntimeInterface(CRl)接口,qJCRIshimruntime(rune)通过K8s来创建POd或容器。kata-proxy:kata-ProXy提供了kata-shim和kat
4、a-runtime与VM中的kata-agentil信的方式,其中通信方式是使用Virtio-Serial或VSOCk,默认是使用VirtiO-SeriaLShim:kata-shim类似DOCker的containerd-shim或CRI-O的conmon,主要用来1!游和回收容器的进程,kata-shim需要处理所有的容器的IO流(stdout,stdinandstderr)和转发相关信号。当前KataContainer了KataShimV2(containerd-shim-kata-v2)版本,实现了ContainerdRuntimeV2(ShimAPI),Tkata-runtimexk
5、ata-shimxkata-proxy的功能,所以架构图中不再包含这几部分。其演进方式如下图所7JPodSandbox图6:KataShimV2演进图Hypervisor:kata-container过QEMU/KVM来仓J建虚拟机给容器运行,可以支持多种hypervisors。1.4.3Kube-OVNKUbe-OVN6是一款CNCF旗下的企业级云原生网络编排系统,将SDN的能力和云原生结合,提供丰富的功能,极致的性能以及良好的可运维性。KUbe-OVN可提供跨云网络管理、传统网络架构与基础设施的互联互通、边缘集群落地等复杂应用场景的能力支持,解除KUberneteS网络面临的性能和安全监控
6、的掣肘,为基于KUbemeteS架构原生设计的系统提供成熟的网络底座,提升用户对KUberneteS生态RUntime的稳定性和易用性。KUbe-OVNfiiS威U和SS三,平移OPenStaCk网络的M口功能至JKUbemetes。OPenStaCk的网络已经发展了很多年,很多设计和概念也基本成了SDN的标准。KUbe-OVN通过引入高级功能和成熟的网络概念,从整体上增强KUberneteS网络的能力,并通过OVN实现网络的数据平面,简化维护工作。Kube-OVN的组件可以大致分为三类: 上游OVN/OVS组件。 核心强制器和Agent。 监控,运维工具和扩展组件。图7:KUbe-OVN架构
7、图J0VN0VS:该类型组件来自OVN/0VS社区,并针对KUbe-OVN的使用场景做了特定修改。C)VN/0VS本身是一套成熟的管理虚机和容器的SDN系统。KUbe-OVN使用OVN的北向接口创建和调整虚拟网络,并将其中的网络概念映射到KUbemetes之内。ovn-central:DePIOymenti亍OVN的IsI里平面组件,包括OVn-nb、OVn-Sb和OVn-northd。多个OVn-CentraI实例通过Raft协议同步数据保证高可用。- ovn-nb:保存虚拟网络配置,并提供API进行虚拟网络管理。kube-ovn-controller将会主要和ovn-nb进行交互配置虚拟网
8、络。- ovn-sb:保存从ovn-nb的逻辑网络生成的逻辑流表,以及各个节点的实际物理网络状态。- ovn-northd:将ovn-nb的以网译成ovn-sb中0igS三0ovs-ovn:ovs-ovn以DaemOnSet形式运行在每个节点,在Pod内运行了Openvswitchxovsdb和Ovn-Controllere这些组件作为OVn-CemraI的Agent将逻辑流表翻译成真实的网络配置。Agent该部分为KUbe-OVN的核心组件,作为OVN和KUbemeteS之间的一个桥梁,将两个系统打通并将网络概念进行相互转换。kube-ovn-controller:该组件XbDePIOyme
9、nt执行所有KUberneteS内资艇IOVN资源工作,其作用相当于整个KUbe-OVN系统的控制平面。1(此0-枚48卅。1国监听了所有和网络功能相关资源的事件,并根据资源变化情况更新OVN内的逻辑网络。主要监听的资源包括:Pod、Service.Endpoint.Node、NetworkPoIicyxVPCxSubnet.VlansProviderNetworkekube-ovn-cni:该组件为TDaemonSet运行在每个节点上,实现CNl接口,并操作本地的OVS配置单机网络。kube-OVn-Cni会配置具体的网络来执行相应流量操作。监控,运维工具和扩展组件该部分组件主要提供监控,诊
10、断,运维操作以及和外部进行对接,对KUbe-OVN的核心网络能力进行扩展,并简化日常运维操作。kube-ovn-speaker:该组件为一个DaemonSet运行在特定标签的节点上,对外发布容器网络的路由,使得外部可以直接通过PodIP访问容器。kube-ovn-pinger:该组件为一个DaemOnSet运行在每个节点上收集OVS运行信息,节点网络质量,网络延迟等信息,收集的监控指标可参考KUbe-OVN触指标。kube-ovn-monitor:该组件为一个DePloyrnent收集OVN的运行信息,收集的监控指标可参考KUbe-OVN监控指标。kubectl-ko:该组件为kubectl插
11、件,可以快速运行常见运维操作。2技术实践本章通过一些典型地范例介绍对于在K8s环境下运行虚拟机的功能增强的技术实践。2.1 生命周期管理2.1.1 在K8s环境下实现虚拟机热调整资源在K8s中启动的虚拟机都是在TPod里面运行着IibVirtd和qemu等依赖组件,这样kube-scheduler不需要感知Pod里是一个虚拟机还是一个容器,都按照统一的方式进行管理。既然虚拟机运行在了K8s平台上,那么我们管理虚拟有可以通过kubectl进行管理。创建虚拟机SiSkubectIcreate-fVmLyaml直接通过一zyaml文件来创建T虚拟机。更新虚拟机通过kubectleditvm-nnam
12、espacel即会打开一个Vim编辑器,让用户直接可以修改虚拟机的yaml文件。删除虚拟机IffiSkubectIdeletevmvml-nnamespacelffl5namespacel-FK)Z以机VmL虚拟机热调整资源由于K8s最近的版本已经支持Pod原地扩容了,可以利用了这个功能,实现kubevirt的虚拟机的卬U和memory热添加的功能,社区目前只支持CPU的热插。*社区的热扩容的实现:社区目前之实现了通过了IiVemigration(热迁移)功能来实现的,这样的实现依赖虚拟机是否可以进行热迁移,比如虚拟机如果有gpu挂载的话,就不能实现热迁移,也就不能热扩容。node图8:社区版
13、热扩容*改进的实现:首先使用了1.27.x版本的特性POd原地扩容的特性(Podin-placeVPA)先将外部的Virt-IauncherPod的Iimi明整到期望的大小,然后再调用IibVirt叩法扩容虚拟机到期望的大小。node图9:改进版虚拟机热扩容2.2镜像管理2.2.1 从Harbor镜像仓库拉取镜像在容器云平台启动虚拟机,那么虚拟机镜像最好是能和容器镜像一起管理,避免增加不必要的菅理成本,所以可以将制作好的虚拟机镜像伪装成为了一个容器镜像存放在Harbor中,这样就不用单独管理虚拟机的镜像了。HarbOr7是由VMWare公司开源的企业级的DOCkerRegiStry管理项目,它
14、包括权限管理(RBAC)、LDAPx日志审核、管理界面、自我注册、镜像复制和中文支持等功能。HarbO镜像仓t:harbor.mec.local,首51383112(11命dmageURLtbHrtfedora36datestbtVolume:resources:requests:storage:IOGi创建成功,EVM可正常访问。#kubectlgetevmecs-registry-fedora-nwq-testNAMEAGEecs-registry-fedora3hlm#kubectlgetvmecs-registry-fedora-nwq-testNAMEAGESTATUSREADYNO
15、DENAME READY Trueecs-registry-fedora3hlmRunningTrue#kubectlgetvmiecs-registry-fedora-nwq-testNAMEAGEPHASEIPecs-registry-fedora3hlmRunning192.168.100.26ecs82.3存储管理2.3.1 KataCOntainer使用卷的存储直通模式本项优化是为了提高使用Kata作为容器运行时提高CePhrbd作为磁盘时的IO性能。原有挂载是储存卷(RBDimage)挂载到宿主机的目录中,然后通过Virtio-fs协议,将存储卷的内容共享到KataContaine
16、r+如下图所示:可以添加卷直通功能,分为半直通(块直通)和全直通(rbd直通)两个模式。其中半直通如下图所示,去掉了中间的协议Virtio-fs,将映射到宿主机上面的块设备通过qmp命令直接添加到了KataContainer中,KataCOmainer再通过m。Un曲设备进行内容的读写。全直通如下图所示,进一步的去掉了挂载到宿主机上面的动作,将rbdimage直接通过qmp指令作为块&添力唯!J了KataContainer中,KataContainer再iSi3:moun曲IggiS行内容断期。卷直通功能是否开启通过PVC的annotations进行控制。在PVC的annotations中添加
17、了VOIUme.kataContainerS.iodirect-mod与段O1 .当VOlUme.katacontainers.iodirect-modefi为block”时,为半直通衡C;2 .当VOIUme.kataContainerS.iodirect-modefl为rbd时,为全盲通模式;3 .在字段的值不为上述两个或者不添加该字段时为原有模式。直通模式,通过kubectlexec-itcentos-blk-test-bash进入到对应容器后可以看到对应的块设备且对应的FileSyStem不为none:rt(a)deployersimple-test#kubectlexec-itcen
18、tos-blk-test-bashroOtcentos-blk-test/#df-hFilesystemSizeUsedAvailUse%Mountedondevsdb4.9G265M4.4G6%/tmpfs64M064M0%devtmpfs998M0998M0%sysfscgroupdesdc20Ga0ML9G1%/data-rtxidevsddZ0G6,0ML9G1%/data-blockshm998MO998M0%devshmrt(Scentos-blk-test/#IsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsda8:005G0disksdb81605G
19、Odisk/sdc83202G0diskdatarxisdd8:4802G0diskdata-bkkpmem25900382MIdisk-pmempl259:10380M1part半直通模式,创建Pod之前通过ISblk查看host的块设备信息,如果为半直通则创建完Pod之后host会多出来一个rbd的块设备卜oothostl#IsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsr11:01486K0romrbdl251:1602GOdiskvda252:0050GOdisk-dal252:1OSOGOpart/2.3.2KataContainer和OpenEBS适配
20、优化本项优化是为了提高使用Kata作为容器运行时提高OPenEBS作为磁盘时的I。性能。OPenEBS8是一种开源云原生存储解决方案,托管于CNCF基金会。OPenEBS是K8s本地超融合存储解决方案,它管理节点可用的本地存储,并为有状态工作负载提供本地或高可用的分布式持久卷。OPenEBS支持两大类卷,本地卷和复制卷。管理员和开发人员可以使用kubectl、Helm、Prometheus.Grafana.WeaveSCoPe等K8s可用的工具来交互和管理OPenEBS。为了实现KataContainer使用OPenEBS的本地卷直通方式,修改OPenEBS的IVm-IoCaIPV直通的实现。O