共计 2278 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | 对 CoreOS 容器操作系统,有企业发行版 RH CoreOS,还有社区发行版 Fedora CoreOS,社区发行版内核更新比较快,基本上跟 Fedora Linux 内核保持一致。 |
对 CoreOS 容器操作系统,有企业发行版 RH CoreOS,还有社区发行版 Fedora CoreOS,社区发行版内核更新比较快,基本上跟 Fedora Linux 内核保持一致。
容器是对应用一次彻底的封装,抽象成简单标准的操作; 应用的生产者使用 build 指令将应用打包成一个标准镜像; 然后使用 push 命令将镜像推送到镜像仓,即可完成应用标准发布; 应用的使用者使用 pull 下载标准镜像,然后使用 run 命令运行指定的环境,即可完成应用的快速部署。容器完美的解决了应用的标准化问题,但是多容器依然需要共享底层基础操作系统,并没有解决基础操作系统自身的众多问题。
随着现代化架构的应用系统建设,尤其是微服务架构大规模推广,系统的规模跟复杂程度都在指数增长。从单台的物理机,到虚拟化成几台服务器,再到现在几十乃至上百个容器实例的规模,对于系统运维,传统的手工方式已经无法胜任,必须通过全面推广自动化来提升运维效率。
但是自动化面临最大的阻碍就是管理对象的一致性问题,尤其是底层操作系统。Linux 操作系统发行版本多,常用的 rpm 包在 300~600 左右灵活组合使用,面向大规模节点的批量部署、升级、安全漏洞管理都面临巨大的挑战。近几年的 Kubernetes 集群大规模生产故障基本上都是由底层操作系统引发的。因此,基于容器的理念进一步标准化底层操作系统,实现基础架构不可变,提升一致性,以此来应对当前容器大规模运维的挑战。
什么是不可变基础设施?CNCF 不仅对云原生做了定义,同时有明确云原生的代表技术包括容器、服务网格(Service Mesh)、微服务、不可变基础设施和声明式 API。其中不可变基础设施是云原生的代表技术,同时也是一种思想理念。
不可变基础设施的核心思想是任何基础设施的实例一旦创建之后变成为只读状态,如需修改和升级,则使用新的实例进行替换。可变的基础设施人工干预较多,需要人工去操作系统里进行各种更改; 不可变的基础设施更偏向自动化,预先将基础设施及其依赖都定义好,只需要去触发新的变更就可以完成整体变更。
对于容器技术,当构建一个镜像,然后在镜像的基础上去部署业务。如果出现问题,不会去已有容器的里去做变更,而是从容器构建阶段去解决问题,重新打包构建新的镜像。所以从容器的角度,镜像就是一个不可变的基础设施。
不可变的基础设施逐渐下沉到操作系统层面,形成许多容器化操作系统,比如 RancherOS、K3os、CoreOS 等。容器操作系统多种多样,但都有一个共同点就是底层基础设施不可变。不管上层业务如何变化,底层操作系统都是作为一个整体去发布,而不是大量 rpm 包随意组合去发布,最简单的例子就是 Android 手机操作系统,一个 ROM 是一个完整的版本,所谓不可变,并不是说它不变,而是说操作系统在打包的时候,把所有内核及 rpm 包都规范化,作为一个整体进行升级,回滚和运维。
基于容器理念重新构建操作系统。首先,基础架构不可变,提升一致性,将操作系统中各种非核心的功能全部剥离出来,比如说日志,监控,还有很多其他一些工具,按需以容器的形式调度运行,即 run everything in container; 其次,使用容器来运行各种组件和 workload,将底层核心功能的最大程度的标准化,通过配置文件提供一定的自定义能力。满足这两个最基本的特性,基本上就实现了基础设施不可变。如图下图所示几个比较知名的容器操作系统:
几乎所有的公有云厂商也快速跟进,可谓百花齐放百家争鸣。2015 年,红帽提出 Atomic 原子操作系统,希望解决容器运行环境问题,简化底层操作系统的管理工作量。2018 年,通过收购合并 CoreOS,统一了开源社区标准,CoreOS 与 Atomic 合并形成 RHCOS。Atomic 的优势是对各个硬件厂商驱动的良好兼容性,CoreOS 的优势是与 Kubernetes 集成,比如 ignition 点火安装方式,基于 etcd 做多集群管理;Atomic 和 CoreOS 的融合,基本上建立了一个在容器操作系统领域事实的标准,构建一个具备一致性、自维护、镜像不可变、一键升级、一键倒回的特性容器操作系统,简化底层基础架构复杂性。
在开源领域,红帽能胜出最大的原因是 Linux 内核,硬件支持,开源项目的整合能力,开源生态和盈利的平衡。
对 CoreOS 容器操作系统,有企业发行版 RH CoreOS,还有社区发行版 Fedora CoreOS,社区发行版内核更新比较快,基本上跟 Fedora linux 内核保持一致。
RH CoreOS 发行版的内核与 RH Linux 内核保持一致,基本上等社区版运行用户反馈稳定,完成 QA 测试,才会进行发布。所以企业版比社区发行部相对更慢,功能更少,但是会更加稳定且有厂家技术支持。涉及到 CoreOS 功能及验证基本上都是基于 RH CoreOS 的最新版。
同时,CoreOS 继承 RHEL8 内核新特性,诸如 reflink 功能 (节省磁盘空间, cow 机制)、eBPF、XDP(网络加速)、CGROUPV2(实现更好的资源限制与隔离)、nft(更强大的防火墙工具) 等新特性都可以直接使用。