本次的分享主题围绕三个方面展开:
首先简要介绍一下龙蜥云原生 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 打造了一套统一的管控运维接口,让大家可以根据业务需求任意的选择需要的容器运行时,比如我需要资源高效利用,那我就选择原生的容器;我希望实现多种保护,那可以选择安全容器;我需要保护我的金融数据,那我可以选择机密容器。这些都只需要通过一个简单的修改容器配置就可以实现。
当我们拥有了一个操作系统和云原生运行时之后,我们是不是就可以很平滑的把应用云原生化了,答案:还不是。第三步就是丰富多姿的云原生存储技术方案。
经过以上介绍的 6 大步,和大家一起从头开始搭建了一个云原生操作系统的原型。当然大家也知道这个原型还是很粗糙的,还有很多等待大家一起来建设。如果我对云原生 SIG 很感兴趣,我如何才能参与进来?很简单,龙蜥云原生 SIG 的核心运作机制是圆桌会议机制。也就是说只要你对社区感兴趣,对任何一个话题、任何一个技术或者任何一个使用场景感兴趣,你就可以参与到 SIG,大家一起来交流探讨我们所面临的问题、我们可能的技术解决方案以及我们的研发进展,同时龙蜥云原生 SIG 也会秉承坚持桥梁的定位。因为龙蜥云原生 SIG 拥有很多上游社区的核心开发者,只要大家参与到这个社区来,我们一定能在上游和用户之间搭建一条非常通畅的桥梁,让大家一起来推动云原生底层系统的发展。最后再次诚挚邀请大家来参与龙蜥云原生 SIG 的建设工作。
相关链接可移步龙蜥公众号(OpenAnolis龙蜥)2022年9月14日相同推送查看。
—— 完 ——