360SDN.COM

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

来源:云技术实践  2017-11-29 09:02:10    评论:0点击:

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 群,一起交流技术,申请表填写

扫描二维码


相关阅读:

高端私有云项目交流群,欢迎加入!

IBM推出新 DNS 服务(9.9.9.9),谷歌(8.8.8.8)要哭了。。。

震撼:AWS放弃XEN 改用KVM作为新的虚拟化引擎

容器是什么,和Kubernetes是什么关系,为什么对OpenStack很重要?

谷歌和IBM启动开源项目以更好地控制容器

CNCF基金会公布了30名新成员,共达到138名成员

Kubernetes 1.8专注安全,在容器编排平台中稳居领导地位

云管理平台实践指南

Prometheus(普罗米修斯)用户档案:动态化特性加速weaveworks云原生程序的发展

附PDF下载:《迁移到原生云应用架构》第二部分

阅读原文

为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权