只需 6 步,你就可以搭建一个云原生操作系统原型
编者按:过去的三年对基础软件领域来说是不平凡的三年,是波涛汹涌的三年。随着国际形势和行业格局的变化,大家一定充分感受到了云原生和操作系统这两个话题的热度。那么当云原生和操作系统这两个热点话题相遇的时候,会发生什么故事?本文整理自 2022 年阿里巴巴开源开放周技术演讲,让作者带我们走进这场技术盛宴。
首先简要介绍一下龙蜥云原生 SIG(Special Interest Group) 的前世今生。我们为什么要成立云原生 SIG?想解决什么样的问题?它如何解决这些问题?接下来进一步分享如何基于开源社区和组织,从头开始一步一步构建一个云原生操作系统的原型。最后介绍云原生 SIG 的运作机制,并诚挚地邀请大家一起来参与龙蜥云原生 SIG 的建设。
一、龙蜥社区云原生 SIG
回头看我在操作系统和云原生两个领域的一些经历是非常有意义的,因为它可以让我从不同的视角来看这两个领域的发展。基于我在操作系统和云原生领域的职业经历,最近我开始思考云原生和操作系统是什么关系?应该如何推动这两个领域的共同发展?所以我协同行业的合作伙伴一起推动成立了龙蜥云原生 SIG,为研发一套龙蜥云原生操作系统做准备。上面提到了龙蜥云原生操作系统,那么大家可能会好奇,什么是云原生?云原生和操作系统有什么关系?我们如何才能构建一个云原生操作系统?
云原生就是充分利用云基础设施来开发软件应用的一种模式,也就是站在巨人的肩膀上,充分利用成熟稳定的云基础设施来开发、发布、运行和维护一个应用,以保障我们应用的弹性、性能、容器、成本等诸多方面的诉求。
(图/龙蜥云原生系统架构)如上图所示,是一个典型的云原生系统的架构,其包含四个部分:第一个最底下的是云原生的基础设施。它提供诸如虚拟机、服务器等诸多的物理资源,以及告警、日志等诸多的服务。第二在这之上龙蜥会构建一套云原生管控。云原生管控者主要提供定义云原生应用的机制,以及为云原生应用服务的一些通用框架,比如说 service mesh 等类似的服务框架。当然,云原生管控系统里面最核心的则是云原生编排系统,它负责感知底层的资源,调度底层的资源来服务于云原生应用,最后它会把云原生应用调度到一个具体的云原生节点上来执行。第三个系统则是云原生节点系统。它功能看起来很简单,只需要负责高效地执行被调度到本节点的云原生应用,但其实这个任务并不简单。第四个最上层则是云原生应用。这层负责实现用户的业务逻辑和交付商业服务。上面提到:简单的节点系统其实并不简单,它也面临诸多的挑战。为什么?因为从最开始的无状态应用到现在的大数据、AI、数据库等各种严肃应用的云原生化,业务对云原生节点系统提出了严苛的诉求。比如如何保证我们节点的资源利用率?如何保证云原生应用的 QoS?如何隔离多个应用之间的故障?以及保障各个应用的数据安全?这些挑战都是云原生节点系统需要去面对和解决的问题。上面提到云原生节点系统面临诸多的技术挑战,可能大家也意识到了这些挑战恰恰是操作系统所擅长的领域,因此我们自然而然地就诞生了一个这样的想法,那就是需要为云原生节点系统打造一套方便、易用、完善的云原生操作系统。那么如何来打造这个系统?基于以上思考,我们成立了龙蜥云原生 SIG。龙蜥云原生 SIG 有三个核心的定位,就是桥梁、组件以及系统。
首先,龙蜥云原生 SIG 是一个桥梁,或者说是大家坐在一起聊天的地方,让我们一起来交流用户的需求、业务所面临的挑战,以及我们会邀请上游技术社区的核心开发人员来参与这个过程,看看上游社区能为我们的应用、业务提供什么样的帮助,提供什么样的解决方案。另外一个方面,云原生 SIG 也会负责拉通龙蜥社区内部的其他相关的技术 SIG。比如会协同机密容器 SIG、高性能存储 SIG、容器网络 SIG 以及容器 OS SIG,大家共同来打造一套易用的云原生操作系统。当然,云原生 SIG 的具体交付件则是稳定好用的云原生组件和系统。
二、从零开始构建云原生 OS
接下来我会和大家一起基于开源社区和开源组件,从头开始构建一个云原生操作系统的原型。非常欢迎大家一起来参与龙蜥云原生 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 的建设工作。
相关链接:
龙蜥云原生 SIG 地址:https://openanolis.cn/sig/cloud-native2022阿里巴巴开源开放周演讲视频:https://openanolis.cn/video/#643729391503840851
—— 完 ——
加入龙蜥社群加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥社区(OpenAnolis)交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!
2.红象云腾(Redoop Enterprise)V9 与龙蜥(Anolis OS)8 完成兼容认证
3.技术解读:Dragonfly 基于 P2P 的智能镜像加速系统
5.ATC'22顶会论文RunD:高密高并发的轻量级 Serverless 安全容器运行时