乐趣区

关于云原生:只需-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

接下来我会和大家一起基于开源社区和开源组件,从头开始构建一个云原生操作系统的原型。

第一步,咱们须要因地制宜,为云原生利用构建一个容器优化的 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 的建设工作。

相干链接:

龙蜥云原生 SIG 地址:https://openanolis.cn/sig/clo…
2022 阿里巴巴开源凋谢周演讲视频:https://openanolis.cn/video/#…

—— 完 ——

退出移动版