专栏名称: 分布式实验室
最专业的Docker文章,最权威的Docker新闻。关注容器生态圈的发展。
目录
相关文章推荐
51好读  ›  专栏  ›  分布式实验室

rkt容器引擎发布v1.14.0:专注稳定性和最小化

分布式实验室  · 公众号  · 后端  · 2016-09-11 07:59

正文


rkt是一款由CoreOS打造的容器引擎。在今年的早些时候,我们发布了rkt的第一个稳定版本。从那以后,项目一路快速前进。伴随着一个又一个版本,rkt朝着它提供稳定和最小化容器运行时的目标前进。现在,我们来简短的介绍一下项目的现状和它自1.0版本后出现的一些比较重要的变化。

rkt发展现状

很多用户通过各种方式表达了他们对rkt的关切:或提供宝贵的反馈和使用案例,或提议了各种新特性。在这些反馈的基础上,有一些做出的更新值得注目想在此强调一下。这些只是伴随每一个发布版本,用来跟踪改动的变更日志(https://github.com/coreos/rkt/blob/v1.14.0/CHANGELOG.md)中的一小部分。

在标准化方面,OCI正朝着1.0版本前进。rkt为了完全支持这个重要的里程碑,正在有条不紊地进行相关工作。直接处理OCI镜像的一些初步工作已经开始,并且rkt fetch已经能理解目前起草的新格式。

我们也在虚拟机驱动的容器(VM-powered containers)方面也取得了很多的进步。Stage 1的KVM实现( KVM stage1 flavor) 现在已经可以作为传统基于命名空间引擎的成熟替代品。目前的实现是基于LKVM(Native Linux KVM),但同时我们也在进行基于QEMU(http://wiki.qemu.org/Main_Page)方面的努力。

更重要的是在用户体验方面,增加了两个额外的子命令用来管理Pod的完整生命周期,分别用来执行停止和导出的操作。rkt stop可以用来干净地停止正在运行的Pod。rkt export能在Pod退出之后导出对于容器镜像的更改。这两个子命令提供了同构且快速的操作方式,而在之前(要完成同样的操作)需要多个步骤或者需要主机上额外的工具辅助。

最后,有的应用场景可能需要运行特定的可以直接访问系统资源、不做与主机交互限制的Pod。对于这些需要拥有特权的Pod的场景,我们在--insecure-options复合选项里面增加了一些选项,可以让用户用来禁用特定的在默认情况下处于启用状态的隔离器。

隔离和增固

基于社区安全专家的反馈和分析人士的报告,我们采用了一些增固的最佳实践。在这些反馈基础上,我们不断地实现容器新的隔离层并默认启用。这些安全的特性随着每一个版本的发布在持续地改善。下面一些是目前在V1.14版本中可以用的:

  • Pod中的应用现在位于现有的Pod命名空间之上的一个挂载的专用命名空间里,并且可以根据选择转变为只读,以防止运行时对应用镜像的更改。

  • 用户可以精心调整赋给Pod单个应用的哪些Linux能力(capability)。可以指定一组能力是否需要保有或者移除。默认情况下,应用运行的时候有一组默认的受到限制的能力,可以在运行的时候通过--caps-retain--caps-remove来进行调整。更多相关细节可以在能力指南(https://coreos.com/rkt/docs/latest/capabilities-guide.html)中找到。

  • 现在可以在指定的应用上使用自定义的seccomp过滤器。这能让用户决定是否需要将一些系统调用设为禁止(黑名单)或者允许(白名单)。默认情况下rkt白名单有一组标准的系统调用,并且提供了一些可以模拟其他运行时的预先定义好的系统调用组。这些可以在运行时通过--seccomp来调整。更多相关细节可以在seccomp指南(https://github.com/coreos/rkt/blob/v1.14.0/Documentation/seccomp-guide.md)中找到。

其他新增的领域包括:加强了对用户命名空间的支持;为应用设置no-new-prilege比特位;进一步加强cgroup的参数。这些绝大多数的特性都满足新的安全措施可用作systemd属性的要求,更多相关细节可以在这里(https://www.freedesktop.org/software/systemd/man/systemd.exec.html)的文档找到。

改善生态系统

rkt模块性的一个额外好处是项目从整体上能依赖并获益于Linux健康的生态环境。上面很多描述的改进,都是通过重用或者扩展已有的组件达到的,就如systemd-nspawnlibsecomp

我们同时相信这也是一个我们项目很重要的一方面:利用并改良现有的安全组件,有助于引起大家重视并修复存在的问题,这样从总体上能转化成所有人安全性的提高。对于那些对这些细节感兴趣的人,我们将会在接下来的柏林systemd.conf 2016(https://cfp.systemd.io/en/systemdconf_2016/public/events/24)上深度地阐述这个话题。

稳健发布,专注于运行时的稳定

rkt旨在提供一个专注性强的容器引擎,可以在生产环境中可以被依赖使用,将其余的任务(如集群编排和节点管理)放手交给外部组件来处理。出于这些原因,我们努力集中打造并稳定一组核心的特性,同时保持遵循正常的发布日程。稳定的发行版本基于两周一次的节奏,并且我们的发布测试专员(release pilot)会保证每一个提议更改的质量。也欢迎大家都来帮助我们rkt v1.15.0的发布,它的安排日程就在近期(https://github.com/coreos/rkt/issues/3141)。

系好安全带,我们准备起飞了!

我们鼓励每个人加入社区,参与到rkt中,帮助我们完善这个CoreOS和Tectonic平台的中心组件。可以加入rkt-dev的邮件列表,或者Freenode上的#rkt-dev IRC频道,或者参与Github的Issue(https://github.com/coreos/rkt/issues),或者提交代码并修复项目中的问题。

本文为翻译文章,点击阅读原文链接可查看原文。