Rkt 0.8发布,引入Intel的虚拟化技术

本文讲的是本文讲的是,,【编者的话】本文来自CoreOS官方博客,上周rkt发布了0.8.0版本,rkt 0.8.0引入了很多新功能特性,包括初步支持用户命名空间和使用硬件虚拟化增强容器隔离,同时改进了主机日志集成,容器套接字激活,改进的镜像缓存和提升速度。本文重点介绍新引入的硬件嵌入式虚拟化技术,最后简单介绍了一下开放容器平台的进展和如何向rkt贡献。

今天,我们发布rkt v0.8.0。Rkt是一个专为生产环境而设计的应用容器运行时环境,更加高效和安全。

Rkt v0.8.0带来了很多安全上的更新,其中包括初步支持用户命名空间和使用硬件虚拟化来增强容器的隔离性。另外也引入了一系列的功能改进,如主机日志集成、容器套接字激活、改进的镜像缓存和速度提升。

Intel虚拟化技术对于rkt stage1的贡献

得益于模块化设计,Rkt支持接入不同的执行引擎和容器化系统。这是通过阶段体系架构(staged architecture)来实现的,其中第二阶段("stage1")负责创建和启动容器。当我们启动rkt之后,默认情况下它将启动一个单独的阶段stage 1,用来调用Linux cgoups和namespaces(这个组合通常称为“Linux containers”)。

在英特尔工程师的帮助下,我们增加了一个新的利用虚拟化技术的rkt stage1运行时。这意味着在rkt下运行的应用,使用这个新的stage1可以像Linux的KVM管理程序使用的硬件特性一样从主机内核层面进行隔离。

今年五月份,英特尔宣布了这项用于rkt之上的概念验证,作为Intel Clear Containers利用硬件嵌入式虚拟化技术特性来更好的保护容器运行时和隔离应用的成果之一。我们非常激动的看到rkt正在渐渐成型,因为它验证了我们做的一些早期设计原型,比如运行时阶段和资料库的理念。下面是Intel's Open Source Technology Center的Arjan van de Ven说过的话:

"多亏rkt的基于阶段的体系结构,IntelClear Containers team才能够迅速的整合我们的工作,把进一步增强安全性的英特尔虚拟化技术(Intel VT-x)带到容器生态中。我们非常高兴能继续与rkt社区共同工作,来实现我们在传递容器应用部署好处的同时使用硬件嵌入技术增强容器安全性的愿景。"

自从五月份发布原型以来,我们一直在与英特尔的团队共同协作,来确保当使用虚拟化时诸如每个pod一个IP地址和卷组这些特性还是以原来的方式运行。今天rkt的发布见证了这一功能完全融合,使得后端的lkvm是一流的stage1体验。那么,让我们来试试吧!

在这个示例中,我们首先使用默认的cgroups/namespace-based stage1运行一个pod。我们使用systemd-run启动容器,这会动态构造一个单位文件并启动它。检查这个单元的状态会让我们弄清楚在引擎下到底发生了什么。

$ sudo systemd-run --uid=0 \
./rkt run \
--private-net --port=client:2379 \
--volume data-dir,kind=host,source=/tmp/etcd \
coreos.com/etcd,version=v2.2.0-alpha.0 \
-- --advertise-client-urls="http://127.0.0.1:2379" \  
--listen-client-urls="http://0.0.0.0:2379"
Running as unit run-1377.service.

$ systemctl status run-1377.service
● run-1377.service
CGroup: /system.slice/run-1377.service
       ├─1378 stage1/rootfs/usr/bin/systemd-nspawn
       ├─1425 /usr/lib/systemd/systemd
       └─system.slice
         ├─etcd.service
         │ └─1430 /etcd
         └─systemd-journald.service
           └─1426 /usr/lib/systemd/systemd-journald

请注意,我们可以看到pod内的整个过程层次结构,包括systemd实例和etcd进程。

接着,我们通过添加--stage1-image标签在新的基于KVM的stage1下启动这个容器:

$ sudo systemd-run -t --uid=0 \
./rkt run --stage1-image=sha512-c5b3b60ed4493fd77222afcb860543b9 \
--private-net --port=client:2379 \
--volume data-dir,kind=host,source=/tmp/etcd2 \
coreos.com/etcd,version=v2.2.0-alpha.0 \
-- --advertise-client-urls="http://127.0.0.1:2379" \
--listen-client-urls="http://0.0.0.0:2379"
...

$ systemctl status run-1505.service
● run-1505.service
CGroup: /system.slice/run-1505.service
       └─1506 ./stage1/rootfs/lkvm

请注意,该进程层级到lkvm就结束了。这是因为整个pod现在是在KVM进程内执行,包括systemd进程和etcd进程:对主机系统而言,它就像一个虚拟机进程。

通过在调用容器时添加一个标签,我们就利用了公有云用来隔离租户的KVM技术来隔离我们的应用容器,给主机上又加了一个安全层。

感谢来自英特尔的Piotr Skamruk、Paweł Pałucki、Dimitri John Ledkov、Arjan van de Ven的支持和付出。关于这个功能的更多细节请参考lkvm stage1 guide

无缝集成主机级别日志

在systemd主机上,日志是默认的日志聚合系统。随着v0.8.0版本发布,rkt现在能自动与主机日志集成了,如果检测到会提供一个systemd原生日志管理体验。如果需要体验rkt产品的日志,你仅仅需要添加一个机器区分符如-M rkt-$UUID到主机的journalctl命令。

举个简单例子,我们来体验一下之前启动的etcd容器的日志。首先我们使用machinectl列出rkt已经注册到systemd的pods:

$ machinectl list
MACHINE                                  CLASS     SERVICE
rkt-bccc16ea-3e63-4a1f-80aa-4358777ce473 container nspawn
rkt-c3a7fabc-9eb8-4e06-be1d-21d57cdaf682 container nspawn

2 machines listed.

我们可以看到etcd的pod列出的第二台机器已经被systemd发现。现在我们使用jornal直接查看pod的日志:

$ sudo journalctl -M rkt-c3a7fabc-9eb8-4e06-be1d-21d57cdaf682
etcd[4]: 2015-08-18 07:04:24.362297 N | etcdserver: set the initial cluster version to 2.2.0

用户命名空间支持

这次的版本包括对用户命名空间初步支持来改善容器隔离。通过使用用户命名空间,应用程序在容器内可以以root用户运行但是在容器外会被映射到非root用户。

通过从系统的root用户隔离容器增加了额外安全层。这个功能预览版本还是实验性的并且使用拥有特权的用户命名空间,但是rkt的未来版本会在这个版本的基础上继续改进并提供更多规则控制。

为了打开用户命名空间,需要添加两个标签到我们最开始的例子:--private-users--no-overlay。第一个是打开用户命名空间功能,第二个是关闭rkt的overlayfs子系统,因为现阶段它与用户命名空间不兼容。

$ ./rkt run --no-overlay --private-users \
--private-net --port=client:2379 \
--volume data-dir,kind=host,source=/tmp/etcd \
coreos.com/etcd,version=v2.2.0-alpha.0 \
-- --advertise-client-urls="http://127.0.0.1:2379" \
 --listen-client-urls="http://0.0.0.0:2379"`

我们通过使用curl来验证etcd的功能行并且检查etcd数据目录的权限来确认这个功能正常,注意,从主机的角度看etcd成员目录被一个id很高的用户拥有:

$ curl 172.16.28.19:2379/version
{"etcdserver":"2.2.0-alpha.0","etcdcluster":"2.2.0"}`

$ ls -la /tmp/etcd
total 0
drwxrwxrwx  3 core       core        60 Aug 18 07:31 .
drwxrwxrwt 10 root       root       200 Aug 18 07:31 ..
drwx------  4 1037893632 1037893632  80 Aug 18 07:31 member`

增加用户命名空间支持是对我们让rkt成为最安全的容器运行时目标迈出的重要一步,在接下来的版本我们会继续努力改进这一功能。你可以查看roadmap in this issue

开放平台项目进展

在rktv0.8.0版本我们进一步巩固在安全强化方面的成果,并向1.0稳定版本和生产版本推进。我们还致力于确保容器生态系统继续朝着大家发布容器到“构建一次,签名一次,到处运行。”路线前进。如今rkt是应用程序容器规范(appc)的实现,在未来我们希望rkt成为开放容器平台(OCI)规范的实现。不管怎样,OCI还在起步阶段还有很多工作需要做。查看OCI和AppC协调工作进展,你可以在OCI dev邮件列表阅读更多内容。

向rkt贡献

rkt的一个目标是使得rkt成为最安全的容器运行时,并且在我们向1.0版本演变中有还有许多令人兴奋的工作要做。

原文连接:Using Virtual Machines to Improve Container Security with rkt v0.8.0(翻译:朱高校)

原文发布时间为:2015-08-24

本文作者:unodba 

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:Rkt 0.8发布,引入Intel的虚拟化技术

时间: 2024-11-02 08:27:18

Rkt 0.8发布,引入Intel的虚拟化技术的相关文章

Cantivo Linux 1.0.1-svn467发布 桌面和服务器虚拟化发行版

Cantivo Linux 1.0.1-svn467该版本修正了上传文件的小程序(CD/DVD的ISO文件),这将使用户只有一个文件存储在任何定义的数据存储有关的一个错误. cantivo Linux 是一款桌面/http://www.aliyun.com/zixun/aggregation/13995.html">服务器虚拟化的发行版和平台,使用 KVM 管理程序和 SPICE 协议,以一个直观的Web界面进行管理.当虚拟桌面设置完成后,您可以使用一个强大的多平台客户端来享受无与伦比的多

陌陌今日透露将在即将发布的5.0版本中引入星级功能

摘要: 陌陌首推用户星级机制 净化会员体系 月10日下午消息,陌陌今日透露将在即将发布的5.0版本中引入星级功能,将用户划分为不可信用户.一星到五星6个等级,引入用户信用体系,过滤 陌陌首推用户星级机制 净化会员体系 月10日下午消息,陌陌今日透露将在即将发布的5.0版本中引入"星级功能",将用户划分为不可信用户.一星到五星6个等级,引入用户信用体系,过滤垃圾信息骚扰. "很多人在使用社交应用过程中都曾被目的不纯的人或垃圾信息骚扰."陌陌科技COO王力表示,陌陌将在

OpenNode 6.0 beta1发布 服务器的虚拟化工具

OpenNode是一个服务器的虚拟化工具,提供了一个易于使用(基于CentOS/RHEL)裸机的ISO安装程序,支持OpenVZ基于容器和同一个主机的KVMhttp://www.aliyun.com/zixun/aggregation/13883.html">虚拟化技术.OpenNode ISO安装程序可以建立一个最小的CentOS 5服务器系统,具有以下特点:RHEL 2.6.18内核修改.以支持OpenVZ和KVM虚拟化技术.OpenVZ和KVM虚拟机管理程序.libvirt管理界面支

VMware发布一系列论断:虚拟化——解决复杂性与孤岛问题的最佳利器

VMware公司在其VMworld 2016大会上号召客户们"走进未来".虽然听起来很有种浪漫气息,但VMware显然非常清楚,在不久的将来相当一部分客户会将数据由内部环境迁移至云端.在这样的背景之下,虚拟巨头的方案将痛失市场空间. VMware公司当然希望自身能够在这场云变革当中成为赢家,因此其利用本次大会勾勒出了以下场景: 无论您是否愿意,您的企业都将很快使用公有云服务. 公有云需要安全性.可预测性.可管理性.编排方案以及您利用VMware在内部环境下构建的各项技术方案. 大家可以

DragonDisk 0.90发布 Amazon S3服务的文件管理器

DragonDisk是一个Amazon S3服务的文件管理器.它支持备份.共享.并通过一个直观的界面组织你的数据.功能包括:多窗口,Amazon S3帐户之间的复制/移动,一个多线程的HTTP/HTTPS的引擎,拖放,重命名文件和文件夹,文件名过滤器,BiTorrent,限制时间响应,签署网址,文件的完整性控制,元数据编辑器,ACL继承详细的操作日志,等等. DragonDisk 0.90版本增加了快速启动指南,在版本0.88中引入回归已得到纠正.提高账户管理功能. 软件信息:http://ww

热门旅游App“在路上”4.0版发布 启动旅型家计划

中介交易 SEO诊断 淘宝客 云主机 技术大厅 "在路上"4.0新版正式发布 2013年5月26日,在苹果AppStore上持续火热的社交旅行App"在路上",在北京798联合艺术中心举办了"寻找在路上「旅型家」暨在路上4.0 新版发布"发布会,220多位来自旅游产业链的各路嘉宾受邀出席,阿里巴巴航旅事业部负责人中玉率淘宝旅行及阿里投资部高管近十人到场助阵本次发布会.发布会上,"在路上"团队首次对外展示了最新版"在路

Ubuntu Tweak 0.7.0 已经发布

自四个月前全新的Ubuntu Tweak 0.6.0正式发布以来,作者还发布过一个0.6.1维护版本.现在,Ubuntu 12.04 LTS马上就要到来,而一个与其配合的Ubuntu Tweak也已经就绪,它就是今天正式发布的:Ubuntu Tweak 0.7.0. Ubuntu Tweak 0.7.0带来大量无论是用户体验还是功能方面的改善,它将再次帮助你享用Ubuntu.  在全面介绍Ubuntu Tweak 0.7.0以前,先高亮一下这个版本有哪些显著的变化:  4个旧特性回归:应用中心,

GTK+3.0终发布:诸多新特性亮相

导读:文章来自imtx.me,作者以生动.有趣.新颖的口吻给大家介绍了GTK+3.0的新特性:以下是全文: 关注已久的GTK+3.0终于发布了,真是等着让我脖子都掉下来了.没想到这么快两年了.如今它终于发布,不记录点文字还真是过不去,我就稍微详细地介绍下GTK+3.0吧. GTK+3.0的发布公告在此:http://mail.gnome.org/archives/gtk-devel-list/2011-February/msg00020.html 针对其一些重大更新,我稍微做点扩展介绍. 完全C

Debian 6.0“Squeeze”发布

导语:历经两年时间开发,Debian项目正式发布了最新的v6.0稳定版,代号"Squeeze".Debian 6.0首次包含Linux和BSD两个内核版本:Debian GNU/Linux和Debian GNU/kFreeBSD,后者是以技术预览版名义引入. Debian 6.0更新了超过1000个软件包,加入了Chromium浏览器,监视工具Icinga,包管理前端Software Center,网络管理工具wicd,Linux容器工具lxc,集群框架Corosync,简化了安装进程