掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

CoreOS评测:用于容器和Kubernetes的Linux

CoreOS容器Linux为容器集群提供了安全、一致和可靠的基础,但这并不容易。

CoreOS容器Linux是为kubernetes设计的容器操作系统,CoreOS容器基础管理平台的特色是使用Rocker或者Docker容器引擎,Etcd做服务发现和配置,Flannel网络,Kubernetes容器管理。在容器操作系统中,CoreOS提供了一个连续的自动更新流,理论上来说,它不会影响运行的应用程序,这是因为它们在容器中运行。

容器Linux是全部使用容器,并且涉及大规模的编排,您不会找到包管理器或传统的Linux管理工具。因此,容器Linux不像其他面向容器的Linux那样容易起步,也不容易运行和试验。它是一个以生产为导向的系统,专注于为集群的容器主机提供一个稳定的基础。

对于刚刚开始使用的公司来说,还有一些其他的容器操作系统可以选择。特别是,我发现VMware光子操作系统和RancherOS更容易使用。

CoreOS 容器Linux安装和配置

安装CoreOS容器Linux并不简单,CoreOS已经创建了一个名为Ignition的自定义引擎,用于处理磁盘设置,并驱动系统初始化Systemd的各个单元。它通过JSON配置实现。

但是,建议您不要直接编辑这个JSON文件。相反,您可以在YAML中创建一个容器Linux配置文件,然后通过一个单独下载的“转换器”运行这个文件,以JSON格式创建Ignition文件。过程虽然繁琐,但是能减少错误和缩短设置时间。这似乎是最近的一个变化,以前使用过云配置。您仍然可以使用简单的云配置系统,但它不再由CoreOS支持或维护。

CoreOS 容器Linux系统管理

CoreOS容器Linux是一个systemd日志系统。使用CentOS 7、Debian 8或最新的Red Hat和Ubuntu系统的管理员们已经熟悉了systemd日志。对于那些没有这样做的人来说,很重要的一点是,要知道Systemd是Linux的事实上的初始化进程标准,并且负责管理容器Linux中的进程和容器。

以前,CoreOS工具被用来将Systemd和Etcd集成到一个分布式的init系统中,该系统用于调度和管理Systemd单元和容器,但是这个项目最近被放弃了,转而支持Kubernetes(或者说是CoreOS的付费订阅版本的Kubernetes)。CoreOS公司宣布将于2018年2月1日从容器Linux中移除Fleet。

随着Systemd的采用,CoreOS也取代了Unix的标准日志解决方案,Syslog有一个名为Journald的系统。日志存储以二进制格式存储日志,因此不可能使用著名的grep快速检索日志文件。相反,有一个命令行工具可以查询这些文件,journalctl,它的输出可以被输入到grep中。

大多数情况下,这只是对管理员的轻微调整。然而,对日志的一个重大挑战是远程日志文件。有几个新兴的解决方案,但没有真正的标准。CoreOS可以使用Fleet来获得单个机器上特定服务的日志,但缺少集群范围的集中日志系统,这对于调试分布式应用非常重要

容器Linux不包含包管理器,而是要求通过容器安装服务。从概念上讲,这很好,但它限制了管理员使用像Puppet、Chef或Salt这样的通用配置工具来管理集群的能力。规划管理对于容器Linux用户非常重要。

最后,在默认情况下,容器Linux不包含交换分区,尽管可以由Systemd创建。CoreOS最近从Btrfs切换到Ext4,而swap只允许在Ext4上进行交换;这可能解释了为什么swap不是默认创建的。

CoreOS容器Linux存储和网络

容器Linux最显著的特性是磁盘分区,它受到了Chromium OS的启发。这是一个自定义磁盘分区,可以使系统更新失败时回滚。虽然管理员不会直接使用这些分区,但他们应该了解这些分区的功能,以及它们对自动升级过程的重要性。

在容器Linux中,有两个只读的用户(/ usr)文件系统。一个是在线系统,另一个是备份。根文件系统(/)是读写的,有状态信息的地方包括/ var。持续更新系统重写bootloader配置,指示它安装新更新的/ usr分区,但不涉及/。

如果应用程序不得不将所有数据写到根分区,那么它很快就会耗尽空间。幸运的是,您可以使用标准的Systemd方法向系统添加存储。systemd安装配置单元可以在运行时或使用容器Linux配置文件的配置,将磁盘附加到文件系统挂载点。在初始配置之后,容器Linux本身中对管理各种目录没有任何机制,例如/ var/www或/ var/ lib/docker。因此,如果您没有使用CoreOS Tectonic,那么您需要考虑配置管理和监视系统。

与系统的其余部分一样,网络是由Systemd配置的,无论是手动的还是通过由配置转换卷(ct 命令)处理的容器Linux配置文件,来进行引导的。我测试了几个不同的路由,DHCP,静态ip,和没有问题的接口。在我测试过的任何容器操作系统中,容器Linux中的网络提供了的最少的惊喜。

CoreOS容器Linux升级和降级

CoreOS容器Linux是为连续的自动升级而设计的,这是容器Linux的特点之一。该理论认为,由于所有的应用程序都被隔离在它们的容器中,OS升级可以独立执行。如果出现故障,将使用前一个版本的/ usr分区引导操作系统。

CoreOS已经让管理员对容器Linux更新有了很大的控制权。机器接收到的更新取决于它所遵循的发布通道,其中有三个。Alpha在源代码树中跟踪“head”,包括所有组件的最新版本。测试版包括一些由Alpha提升的组件;CoreOS建议在集群中混合一些测试机器,以摆脱任何特定于安装的bug。第三个通道是稳定的,它由从Beta通道中提升出来的组件组成。

手动回滚是可能的,但不推荐。这是通过cgpt命令完成的,该命令操作GPT磁盘分区和Chromium扩展。没有降级到任意版本号的方法。要开始降级,请检查有/ usr的分区:

现在,为了确定哪一个目前正在使用:

这意味着备份分区必须是/ dev/ sda4。在下一次启动时使用它:

我的降级工作没有任何问题,但显然需要在修改磁盘的引导分区表时保持谨慎。错误的代价是很高的。

与存储管理工具类似,容器Linux上的升级/降级工具是基本功能。他们似乎设计了更多的支持CoreOS的付费产品,也就是CoreUpdate工具,而不是用来管理集群的实践。这些工具和容器Linux系统管理员都有改进的空间,他们要么想花时间做这些,要么选择付费订阅。

CoreOS容器Linux是早期的容器先驱之一,它的目的是支持Kubernetes和CoreOS产品线,而且在Kubernetes或构造部署之外,可能很少有应用程序。尽管在安装和升级/降级等领域有些过于复杂,但是容器Linux确实在生产中可靠地构建了一个容器主机集群。

CoreOS容器Linux概览

容器Linux为容器集群提供了安全、一致和可靠的基础,但这并不容易。

优点

• 紧密集成的垂直堆栈(操作系统,容器管理,网络)

• Kubernetes成熟的容器编排系统

• 支持多个容器运行时和编排系统

• 用于大规模部署的自动化配置

• 支持在多个云上部署

缺点

• 只提供基本管理工具(没有付费的情况下)

• 操作系统的文档很少

• 不方便的两级配置系统

欢迎加入OpenStack vs Kubernetes 群,一起交流技术,申请表填写

扫描二维码

原文来自:云技术实践

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 个人/企业涉诉查询

    通过企业关键词查询企业涉松详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

    通过企业关键词查询企业涉松详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

  • 账号黑产风险识别

    根据手机号来查询是否命中黑产风险

    根据手机号来查询是否命中黑产风险

  • IP反查域名

    IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。

    IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。

  • 人脸卫士

    结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。

    结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。

  • 全国城市空气质量

    全国城市和站点空气质量查询,污染物浓度及空气质量分指数、空气质量指数、首要污染物及空气质量级别、健康指引及建议采取的措施等。

    全国城市和站点空气质量查询,污染物浓度及空气质量分指数、空气质量指数、首要污染物及空气质量级别、健康指引及建议采取的措施等。

0512-88869195
数 据 驱 动 未 来
Data Drives The Future