IT之家 11 月 3 日消息,据 openEuler 发布,NestOS 是一款在欧拉开源社区 Cloud Native SIG 孵化的云底座操作系统,专注于提供最佳的容器主机,大规模下安全的运行容器化工作负载。
Nest 即“巢穴”,作为可以包容 podman(鼹鼠)、iSulad(蚂蚁)、Docker(集装箱)的“巢穴”,NestOS 即化身为可以搭载 iSulad、docker、podman 等基础平台的操作系统。
NestOS 将配置工具 ignition 与 rpm-ostree、OCI 支持、SElinux 强化等技术集成在一起,采用基于双系统分区、容器技术和集群架构的设计思路,可以适应各种不同的基础设施环境,并与 OKD 紧密集成,针对运行 Kubernetes 进行了优化,使系统具备十分便捷的集群组建能力。
NestOS 架构图
NestOS 适用场景
集群规模
NestOS 支持大规模集群部署,分布式应用的数据同步和传输量会随着节点的数量增加而增加,NestOS 可以很好的发挥自动升级,集群管理的特性。同时判断集群是否适用 NestOS 的一个关键依据就是服务是否能够容器化。
面向无状态服务架构
要求系统中的所有服务对单次请求的处理不依赖其他请求。即处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取,服务器本身不存储任何信息。
微服务架构
微服务架构是面向无状态服务架构的一种发展形式,提倡更加松耦合的 SOA 方式。这种部署结构与 NestOS 轻量,快速,分布式数据等特性十分吻合,善用 NestOS 的集群化运维能力能够节省不少迁入微服务架构的运维成本。
NestOS 技术特性
容器技术
搭载 iSulad、docker、podman 等主流容器基础平台,克服了由于用户修改系统内容、用户服务对系统组件依赖,以及系统重启时服务中断等种种导致升级过程不可靠的因素,最终以一种轻量级、定制化的操作系统呈现出来。
Ignition
Ignition 是一个与分发无关的配置实用程序,用于安装系统和读取配置文件(JSON 格式)来初始化 NestOS。可配置的组件包括存储和文件系统,systemd 单元和用户等。
NestOS-installer
NestOS-installer 是一个帮助安装 NestOS 的程序,它可以安装操作系统到目标磁盘,可使用 ignition 和首次引导内核参数对其进行自定义。同时可以列出可供下载的 NestOS 镜像并且下载验证各种云平台、虚拟化或者裸机平台的操作系统镜像。
Rpm-ostree
Rpm-ostree 可以看成是 rpm 和 ostree 的合体。一方面提供了基于 rpm 的软件包安装管理方式,另一方面提供了基于 ostree 的操作系统更新升级。每次对系统的更新都像 rpm-ostree 在提交一次“Transaction”,从而确保更新全部成功或全部失败,并允许在更新系统后回滚到更新前的状态。
Zincati
Zincati 是 NestOS 自动更新的代理,它作为 Cincinnati 和 rpm-ostree 的客户端,负责自动更新/重启机器。它支持自动更新代理、用户自定义配置文件和多种更新策略,具有可配置优先级的日志记录。
双系统分区
NestOS 两个分区分别被设置成主动模式和被动模式,并在系统运行期间各司其职。主动分区负责系统运行,被动分区负责系统升级。一旦新版本的操作系统被发布,一个完整的系统文件将被下载至被动分区,并在系统下一次重启时从新版本分区启动,原来的被动分区将切换为主动分区,而之前的主动分区则被切换为被动分区,两个分区扮演的角色将相互对调。同时在系统运行期间系统分区被设置成只读状态,确保了 NestOS 的安全性。
NestOS 项目地址:https://gitee.com/openeuler/NestOS