Kubernetes 微内核的分布式操作系统( 四 )


与此类似,Kubernetes 这样的分布式操作系统对外提供服务是通过 API 的形式,分布式操作系统本身提供的 API 相当于单机操作系统的系统调用,每个 API 也需要能够注册到某个位置 。对 Kubernetes 来说,API 会注册到 ectd 里 。Kubernetes 本身提供的相当于系统调用的那些 API,通过名为 Controller 的组件来支持,由开发者为 Kubernetes 提供的新的 API,则通过 Operator 来支持,Operator 本身和 Controller 基于同一套机制开发 。
这和微内核架构的思想一脉相承:Controller 相当于内核态中运行的服务,提供线程、进程管理和调度算法等核心能力,Operator 则相当于微内核架构中 GUI、文件系统、打印机等服务,在用户态运行 。

Kubernetes 微内核的分布式操作系统

文章插图
 
因此,Kubernetes 的工作机制和单机操作系统也较为相似,etcd 提供一个 watch 机制,Controller 和 Operator 需要指定自己 watch 哪些内容,并告诉 etcd,这相当于是微内核架构在 IDT 或 SCV 中注册系统调用的过程 。
以 Argo 为例,Argo 是个 Operator,提供在 Kubernetes 中执行一个 DAG 工作流的能力 。用户在使用 kubectl 命令提交 Argo 任务时,实际是让 kubectl 将 Argo 的 yaml 提交给 Kubernetes 的 API Server,API Server 将 yaml 中的 Key-Value 数据写入 etcd,etcd 将会提醒那些正在 watch 指定 Key 的服务 。在我们的例子中,这个服务也就是 Argo 。这正像是微内核架构里用户进程请求用户态服务的过程 。
Argo 得到 etcd watch 的 http 请求,去 etcd 读出 yaml 中的数据并解析, 然后知道要去启动什么容器,并通过 API 要求 Kubernetes 启动相应的容器 。Kubernetes scheduler 是一个 Controller,在收到启动容器请求后,分配资源,启动容器 。这是微内核架构中用户进程通过系统调用启动另一个进程的过程 。
当然,Kubernetes 和单机操作系统也有不同之处:Kubernetes 没有明确的「陷入」过程,而微内核架构的单机操作系统在访问系统调用时需要陷入,在访问用户态服务时则不需要陷入 。但是,Kubernetes 可以为不同的服务设置不同的权限,这一点在一定程度上类似于单机操作系统中内核态和用户态的 CPU 权限的区别 。
微内核在架构上的优势在 Kubernetes 中显露无遗:在 Borg 中,开发者想要添加新的子系统是非常复杂的,往往需要修改 Borg 底层代码,而新系统也因此会绑定到 Borg 上 。而对 Kubernetes 来说,开发者只需要基于 Kubernetes 提供的 SDK 实现一个 Operator,就能够添加一组新的 API,而不需要关注 Kubernetes 的底层代码 。Argo、Kubeflow 都是 Operator 的应用 。任何已有软件都可以方便地通过 Operator 机制集成到 Kubernetes 中,因而 Kubernetes 非常适合作为公有云的底层分布式操作系统,正因如此,Kubernetes 在2014年年中发布,经过2015年一年的成长,在2016年便成为业界主流,对于没有历史负担的公司,也将 Kubernetes 作为内部云的底层系统使用 。
三、尾声
在这篇文章中,我们介绍了单机操作系统的发展简史,介绍了微内核架构在这个历史进程中从兴起到衰落的过程,也介绍了微内核架构在 Kubernetes 中重新焕发生机的过程 。总的来说,显著超前于时代的技术虽然未必能在被提出的时代取得成功,但一定会在多年后,在时代跟上来之后,拿回属于自己的荣耀 。微内核架构在单机操作系统的时代和云计算的时代的不同遭遇证明了这一点,深度学习在低算力时代和高算力时代的不同遭遇也证明了这一点 。
值得一提的是,在 Kubernetes 之后,Google 推出了 Fuchsia 作为 Android 可能的替代品 。而 Fuchsia 基于 Zircon 内核开发,Zircon 基于 C++ 开发,正是微内核架构 。在算力井喷的现代,除了在分布式操作系统领域,微内核能否也在手机/物联网操作系统领域复兴,让我们拭目以待 。
文章来源:
https://mp.weixin.qq.com/s?__biz=MzUzMzU5Mjc1Nw==&mid=2247486583&idx=1&sn=de15ec3224bc4f00b7e77c9f7481eee0&chksm=faa0e3adcdd76abb1b771514c09a486483f008dd911c27295b52da7979cf7509858134ffaf01&scene=21

【Kubernetes 微内核的分布式操作系统】


推荐阅读