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

容器趣闻:分租规模

分布式实验室  · 公众号  · 后端  · 2016-10-16 08:12

正文


我们经常对比容器和虚拟机之间的安全性,也反复问过自己哪一个更安全些。我认为比较容器和虚拟机是建立在错误的基础之上——我们理所应当地把容器和进程来做比较。

我们并不认为容器应当摆脱虚拟机运行,容器可以和虚拟机结合使用,大致有三种常见方式:

  1. 容器运行在虚拟机之内。

  2. 容器和虚拟机分别运行在主机上。

  3. 虚拟机运行在容器之内(这种方式的确可行)。 



前提条件

我们可以任意使用以上列出的三种技术来运行我们的业务。所以对比他们之间的安全性是“不自然”的。我认为一种更“自然”的方式是比较业务负载的租赁需求和隔离性。

分租模式

什么是分租规模(Tenancy Scale)?这是来自一场和红帽产品安全团队领导(例如Josh Bressers)头脑风暴产生的概念。


不知大家现在是否还记得,在我大学时代(1997年),多用户Unix系统非常流行。每个用户可以远程登录(没错,使用telnet)到Unix服务器来运行他们自己的进程。一些用户用来运行批处理任务来进行研究,一些用户运行独立的网站服务器,或者使用系统共享的网站服务器。当你登录系统时,你可以列出所有人正在运行的进程。事实上,如果有人错误的设置了自己家目录的权限,那么任何人都可以访问他们的私人文件,这真是疯狂的一段时光。

在2016年,很少会有系统管理员会认为Linux进程间隔离足以应付不同用户登录到系统中,特别是对于多租户环境下不同组织及个人用户隔离的场景中。

然而假设我是一个大学的系统管理员,不同的研究团队想要运行他们自己的任务,比如一个研究组运行生物学计算,一个研究组运行地理学计算,那么容器的隔离性对他们来讲是否足够呢?我的答案是肯定的。

在另一种假设场景中,我是一个公有云提供商的系统管理员。用户来自于不同的公司、政府组织、研究机构来共享物理资源,则容器本身可能无法提供足够的隔离性。所以我认为虚拟机规模的隔离性才足以应付。

根据上面两个假设的场景,那么一个关心安全性的用户还会有哪些疑问呢?

  1. 如何添加反亲和规则(anti-affinity rules)来确保我的作业运行在不同的虚拟机、不同的物理机上?

  2. 如何确保不同的物理机运行在不同的机柜中,来使用不同的电源分配单元(Power distribution Units, PDUs)和不同的机柜交换机?

  3. 如何确保两个作业实例分散在不同的数据中心,来防备气象或地震灾害?(我在数据中心工作时,客户确实问到过这个问题。)

  4. 你可以让其中一个作业实例运行在月球上以防地球爆炸么?(手动滑稽)

好的,除了最后一个是开玩笑,相信你已经理解了我的意思。

结论

隔离和分租是颗粒化的需求,通常作业会要求“足够的”隔离性,但是什么隔离性是足够的呢?当然是,不同的应用有不同级别的要求。

所以我认为,不要一直在比较虚拟机和容器技术,想想看如何让两者联合起来,以满足你的作业的需求才是正道。

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