当云原生遇到利用体系,会发生什么故事?本文整理自阿里云资深技术专家刘奖在 2022 年阿里巴巴开源开放周的主题技术演讲《龙蜥体系遇上云原生》。本次的分享主题围绕三个方面睁开:首先简要介绍一下龙蜥云原生 SIG(
本次的分享主题围绕三个方面睁开:首先简要介绍一下龙蜥云原生 SIG(Special Interest Group) 的宿世此生,阐述我们为什么要创建云原生 SIG?想解决什么样的题目?它怎样解决这些题目?接下来进一步分享怎样基于开源社区和组织从零开始构建一个云原生利用体系的原型。末了介绍云原生 SIG 的运作机制,并诚挚地邀请大家一起来参与龙蜥云原生 SIG 的创建。 龙蜥社区云原生 SIG基于我在利用体系和云原生领域的职业履历,协偕行业的合作搭档一起推动创建了龙蜥云原生 SIG,为研发一套龙蜥云原生利用体系做准备。上面提到了龙蜥云原生利用体系,那么大家大概会好奇,什么是云原生?云原生和利用体系有什么关系?我们怎样才能构建一个云原生利用体系? 云原生就是充实利用云底子办法来开发软件应用的一种模式,也就是站在巨人的肩膀上,充实利用成熟稳定的云底子办法来开发、发布、运行和维护一个应用,以保障我们应用的弹性、性能、容器、成本等诸多方面的诉求。 如上图所示,是一个典型的云原生体系架构,包罗四个部分:
简单的节点体系着实并不简单,它也面临诸多的挑衅。为什么?由于从最开始的无状态应用到现在的大数据、AI、数据库等各种应用的云原生化,业务对云原生节点体系提出了更严苛的诉求。比如怎样保证我们节点的资源利用率?怎样保证云原生应用的 QoS?怎样隔离多个应用之间的故障?以及怎样保障各个应用的数据安全? 这些挑衅都是云原生节点体系需要去面临息争决的题目,而这些挑衅恰好是利用体系所擅长的领域,因此我们自然而然就诞生了一个如许的想法——为云原生节点体系打造一套方便、易用、美满的云原生利用体系。 基于以上思考,我们创建了龙蜥云原生 SIG。龙蜥云原生 SIG 有三个焦点的定位,就是桥梁、组件以及体系。 首先,龙蜥云原生 SIG 是一个桥梁,大概说是大家坐在一起聊天的地方,一起交换用户的需求、业务所面临的挑衅,并邀请上游技术社区的焦点开发职员来参与这个过程,看看上游社区能为我们的应用、业务提供什么样的帮助,提供什么样的解决方案。 别的一个方面,云原生 SIG 的具体交付件是稳定好用的云原生组件和体系。云原生 SIG 也会负责拉通龙蜥社区内部其他相干的技术 SIG。比如会协同机密容器 SIG、高性能存储 SIG、容器网络 SIG 以及容器 OS SIG,大家共同来打造一套易用的云原生利用体系。 从零开始构建云原生 OS接下来我会和大家一起基于开源社区和开源组件,从头开始构建一个云原生利用体系的原型。 第一步,我们需要量文体衣,为云原生应用构建一个容器优化的 OS。固然,为了方便大家,也可以利用现有的利用体系来支持云原生的应用,但是我们会面临诸如利用体系体积特别巨大、安装运维特别耗时等题目。随着这个体系的运行越来越长,当中利用体系的版本越来越零星越来越多,还会面临体系维护困难的题目。更告急的是,由于传统利用体系内里内置的软件较多,也导致了比力大的安全风险敞口。随着云原生应用的普及以及应用占比的日益提拔,我们值得为云原生应用打造一套专用的利用体系。 基于如许的考量,云原生 SIG 利用安全的 rust 语言从头开发了一套全新的为容器优化的利用体系,我们称之为 Lifsea OS。Lifsea OS 会内置许多云原生所需要的组件,从而免除用户自己选择安装、配置各个云原生组件的烦恼。同时这些组件都会以只读的方式安装利用,从而克制了在运行过程当中被恶意软件篡改的风险。 别的为了简化大家运维大规模集群的烦恼,Lifsea OS 提供了基于 API 的运维管控的接口,也就是说也可以以编程的方式来运维整个体系中的节点。固然,如许一个体系看起来是深度定制化的,但是龙蜥也提供了非常强大的定制化本领。比如说用户可以根据自己的业务需求往 Lifsea OS 体系当中添加须要的组件,修改相应的配置,从而让我们这个利用体系能够真正的适应各个用户场景的需求。 第二步在利用体系之上,我们需要一个能够运行容器的运行时。传统上,云原生和容器有非常强的关系,也就是说云原生是通过容器催生出来的。Linux 利用体系通过提供 cgroup 、namespace 等机制,支持了原生的 RunC 容器。如许的容器运行时拥有资源利用效率高、利用方便、弹性本领强等诸多上风。 随着大数据、AI、数据库等重 IO 应用的云原生化,传统 Linux 云原生容器的不敷便逐步袒暴露来。比如安全隔离本领不够、应用之间相互产生性能干扰。基于如许的思量,我们研发了基于硬件虚拟化的安全容器,安全容器最焦点的本领是提供单向的保护本领,它能保护底子办法不受云原生应用的干扰,同时提供安全故障配置和性能方面的隔离本领。 在安全容器之上,我们进一步研发了机密容器。机密容器相对于安全容器有一个巨大的进步,也就是它把单向保护演进成了双向保护,不光保护底子办法不受应用容器的干扰,同时也保护应用不受底子办法的干扰。由于我们知道数据是用户最焦点的资产,用户把数据搬上云以后,怎样能保护我们的焦点资产?机密容器为我们提供了非常好的解决方案。基于硬件的数据保护机制,我们可以保证,用户的数据对于底子办法来说是透明的,底子办法是没法看见用户的数据的,从而保障用户数据的安全性和隐私性。 大概当大家看见这三种云原生运行的时间,一定会担心,我的这个体系怎么集成了这么多运行时,利用起来得多麻烦呀?这里有个好消息分享给大家,你完全不消担心多个容器运行时的利用和运维题目。由于我们基于 containerd 打造了一套同一的管控运维接口,让大家可以根据业务需求任意的选择需要的容器运行时,比如我需要资源高效利用,那我就选择原生的容器;我盼望实现多种保护,那可以选择安全容器;我需要保护我的金融数据,那我可以选择机密容器。这些都只需要通过一个简单的修改容器配置就可以实现。 当我们拥有了一个利用体系和云原生运行时之后,我们是不是就可以很平滑的把应用云原生化了,答案:还不是。第三步就是丰富多姿的云原生存储技术方案。 当我们真正的把一些应用迁移到云原生之上,特别是迁移到安全容器和机密容器之后,会发现存储的性能成为一个非常巨大的挑衅。我们怎样解决这些挑衅?继承为大家带来一个好消息,云原生为我们提供了对数据分类的机制。由于云原生表现的把用户的数据分成了只读数据、暂时数据以及是我的用户业务需要持久化的数据。根据用户访问数据的差别模式,我们可以提供差别的技术解决方案。比如针对只读数据,龙蜥云原生 SIG 提供了一套非常美满的方案。从我们基于 virtiofs 、Nydus 和 EROFS 内核文件体系,打造了一套能同时支持云原生容器、安全容器和机密容器的存储方案,从而实现高效的存储性能。 但是对于用户的业务数据,我们怎样提拔性能?龙蜥云原生 SIG 也为大家提供了一个叫做 Fluid 的数据编排组件,它可以根据用户利用数据的方式表现的界说数据集,再利用差别技术方案来优化差别的数据集。比如说对于只读的用户数据,我们可以用刚才提到的 Nydus 、EROFS 大概 Fluid 雷同的技术方案来提拔性能。 对于可写的用户数据,可以利用阿里的 JindoFS、英特尔的 SPDK 等技术来提拔可写数据的性能。 当我们拥有了运行时和存储解决范畴,下一步我们则需要面临最复杂的容器网络互联互通的题目。这儿还在继承探索中,由于这个领域是相对复杂度非常高。 大家知道在混淆云如许的条件下面,我们会面临变革多端的网络环境。怎样为这些网络环境提供一套云延伸网络方案?怎样实现 IaaS 和 PaaS 的网络互通?怎样让我们的底层网络底子办法能满足高速创建、销毁云原生应用的诉求?这些都是我们现在面临的挑衅。我们还在和社区搭档们一起来界说这些题目,并寻求相应的技术解决方案,也非常欢迎大家一起来参与龙蜥云原生 SIG 网络相干的技术的研讨以及创建。 我们现在拥有了一个美满的计算存储网络的云原生体系,怎样才能利用起来?需要一个 ACNS(Anolis Cloud-Native Suite),龙蜥云原生套件。 龙蜥云原生 SIG 基于阿里的 ACK 体系,开源了一套叫做 ACK Distro 的 ACNS(Anolis Cloud-Native Suite)龙蜥云原生套件。基于如许的龙蜥云原生套件,可以很方便地把你的应用搬迁上来,由于这个版本是经过阿里云的生产验证的,而且我们会在生产版本和开源版本之间保持足够的同步,让大家能尽早利用到最新的 k8s 技术,以是有了龙蜥云原生套件之后,大家就可以很方便地利用云原生技术来实行摆设自己的云原生应用。 但是下一步我们会发现,纵然我们把我们的应用云原生化了,我们的节点的资源利用率还是不够高,那怎么办? 差别的应用对资源的诉求不一样。有的需要许多的 CPU 计算本领,有的需要很大的 IO 带宽、有的需要实时相应。我们可以把这些应用通过技术手段混淆摆设到一个节点上,从而充实利用这个节点上的各种资源,这就是我们所谓的混部体系。 在 2022 年年初,阿里云开源了 Koordinator 的业务混部编排体系,它焦点是增强 k8s 的调度体系来支持业务的分布。这也是我们基于阿里体系多年的生产经验所研发出来的一套体系,现在分享给大家。再进一步,当我们能从软件层面来进行业务分布以后,我们会发现再从硬件层面来看,利用资源还是不够高。这里英特尔提供的基于硬件层面的优化调度组件,叫做 CRI Resource Manager,也就是说,可以根据业务的特性和硬件的配置情况来深度优化业务调度本领。 末了一步当我们拥有了如许的一套体系,我们怎样才能把它安装摆设起来? 假想一下,当我们面临一千台虚拟机的集群需要摆设一个云原生体系的时间,我们该怎么做?难道我们需要一台一台地安装各种软件吗?不,你不需要那样做,龙蜥社区提供了sealer 一键式集群打包分发体系。也就是说,你可以为整个集群制作一个镜像,再把这一个集群镜像分发到一千台呆板上。下一步,当我需要分发的节点,许多软件包的分发大概就成为我一个非常大的挑衅。我们也提供了 Dragonfly P2P 的文件分发体系。如许一个 P2P 分发体系,它可以用于分发软件包、软件库、容器镜像利用体系、AI模子数据等。从我们实际生产经验来看, P2P 能大幅提拔云原生体系的数据分发本领。 以上介绍了龙蜥利用体系对云原生应用的支持。那么云原生技术对利用体系有什么影响吗?答案肯定是的。 由于利用体系本身也是一种软件,我们用分发云延伸软件的方式来分发利用体系,这种方式也给我们带来了非常大的想象力。比如我们可以用内核 EROFS 文件体系和 FsCache 体系来实现利用体系数据的按需加载,大概我们可以基于 Nydus 来界说新型的软件包格式。我们也可以利用管理容器镜像的技术来管理利用体系镜像,从而提拔易用性和安全性。 总之,云原生的技术从别的一个方面反向推动了利用体系自身的演进,从而实现云原生和利用体系的协同发展、共同进步、共同演进。 龙蜥云原生 SIG 的运作机制末了我们来一起聊聊龙蜥云原生 SIG 的运作机制。 经过以上介绍的 6 大步,和大家一起从头开始搭建了一个云原生利用体系的原型。固然大家也知道这个原型还是很粗糙的,另有许多等候大家一起来创建。 大概你会想问:假如我对云原生 SIG 很感兴趣,我怎样才能参与进来?很简单,龙蜥云原生 SIG 的焦点运作机制是圆桌集会机制。也就是说只要你对社区感兴趣,对任何一个话题、任何一个技术大概任何一个利用场景感兴趣,你就可以参与到 SIG,大家一起来交换探讨我们所面临的题目、我们大概的技术解决方案以及我们的研发进展。同时龙蜥云原生 SIG 也会承袭对峙桥梁的定位。由于龙蜥云原生 SIG 拥有许多上游社区的焦点开发者,只要大家参与到这个社区来,我们一定能在上游和用户之间搭建一条非常通畅的桥梁,让大家一起来推动云原生底层体系的发展。 末了再次诚挚邀请大家来参与龙蜥云原生 SIG 的创建工作。相干链接:
阿里云资深技术专家刘奖:云原生利用体系的技术实践 |
2022-08-02
2022-08-07
2022-08-02
2022-08-01
2022-08-06
评论