前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >企业容器和虚拟机融合技术及镜像管理

企业容器和虚拟机融合技术及镜像管理

作者头像
Henry Zhang
发布2019-04-12 15:58:13
1.3K0
发布2019-04-12 15:58:13
举报
文章被收录于专栏:亨利笔记亨利笔记

题图摄于旧金山海湾:Bay Bridge & downtown SF

应西山居运维经理肖力肖总的邀请,笔者在4月13日晚在《运维前线》技术群作分享。本文为分享内容的总结和整理。

本次分享主要包括两个方面的内容:

1)企业容器和虚拟机融合技术

2)企业镜像管理Registry系统

企业容器和虚拟机融合技术

近两年,以Docker为代表的容器(Container)技术得到应用广泛。容器的优点很明显,就是轻量、快速和灵活,适合DevOps的要求。目前,大部分的互联网公司都采用了Docker等容器技术,不少企业也在调研和试用中。但容器也有一些不足之处,最大的缺陷就是隔离性问题,引出了对容器技术安全性的担忧。不少用户比较困惑:容器和虚拟机是不是可以互相替代的技术,两者应该怎样取舍才恰当呢?

我们先来看看Docker依赖的底层技术,其中之一是Linux的 namespace,目前的6种 namespaces无法彻底把容器中的应用互相隔离开来。容器间的隔离关系有点象下面的电话亭,彼此间仿佛是隔开的,但仔细聆听,又可分辨到隔壁亭子的声音。

既然Linux容器的隔离度不足,是否能在后续的Linux版本中加强呢?由于技术等方面的原因,Linux的namespace种类不可能无限的增多,因此Linux Container的隔离性问题将会是长期困扰其应用场景的重要因素。

为了解决上述隔离性的问题,业界兴起了一种“虚机容器”技术。简单讲,就是用轻量级的虚拟机替代Container来运行应用。乍一听,虚拟机是个又笨又重的家伙,怎么能够与快速灵巧的容器相比呢?其实这是个错觉。虚机的“重”主要来自内装的操作系统,现代的操作系统的磁盘空间一般都是GB级别的大小。虚机的“笨”也基本由于操作系统启动太慢,吭嗤半天咖啡凉了才看到登录画面。只要把里面的操作系统瘦身,虚机的创建和启动完全可达到毫秒级。这样,虚拟机就象容器那样轻巧快捷,很适合运行容器化的应用,同时具有良好的隔离性,就象下图这样:

“虚机容器”这方面的开源项目有几个:Intel Clear Containers, 国内创业公司的Hyper_,还有就是VMware公司的vSphere Integrated Containers (VIC)。这几个项目基本原理相似,这里给大家介绍的是VMware的VIC。

在VMWorld 2015上,VMware宣布了vSphere Integrated Containers(VIC,项目代号:Bonneville),这是一种“虚机即容器”的解决方案,它在ESXserver中增加了直接运行容器化应用的能力。我们一起来看看它的架构:

首先,VIC接管了DockerDaemon中容器生命周期管理的功能,把原来在Linux中创建Container的操作转向了ESX Hypervisor。另一方面,它继续支持DockerREST API, Docker client的所有命令都可以正常使用。

当运行Container时,VIC首先从Docker Hub下载Docker image。Image以VMDK的格式存放于ESX的datastore里。VIC在dockerdaemon里面提供了自己的graph driver,实现了类似UnionFS的功能,Images在ESX中也是按照Layer来组织管理的,用链式克隆(linked clone)实现镜像的叠加。

在容器的镜像准备好之后,最复杂也最有意思的步骤就是启动容器了。VIC在ESX上预先创建了一个虚机模板,里面安装了极简版的Photon操作系统(Photon是VMware运行容器应用的Linux Distro),整个虚机镜像只有25MB。这个虚机处于启动后的冻结状态(frozen),就象饺子煮熟后速冻起来那样。当需要运行容器应用的时候,通过ESX的InstantClone功能,可以瞬间从模板克隆出一个运行态的虚机,“速冻饺子”就这样迅速解冻成刚出锅的“新鲜饺子”了。

Instant Clone 是ESX 6.0发布的新功能,能够快速克隆运行态的虚拟机,在创建瞬间新旧虚拟机是共享内存和磁盘的,之后采用内存和磁盘的COW(Copy on Write)进行分体操作。Instant Clone最大优点就是虚拟机复制出来时就是可用的状态了,无须再经历操作系统启动的过程,大大节约了时间。上述的虚拟机创建后,再把容器镜像mount到虚拟机里面,容器应用就可以启动运行了。

VIC的虚机比Linux Container的内存开销稍微大些,但比起传统的虚机已经大为减少。鉴于虚机容器带来的好处,这样的额外开销是可以接受的。下图是运行Tomcat时内存消耗的比较。

VIC用虚拟机装载容器化应用,真正实现了应用的隔离。另一方面,应用的启动速度和Linux Container相差无几,同样地快速灵活。在API方面和Docker完全兼容,大量的Docker工具可以直接使用,如Swarm等。最酷的莫过于可运用Hypervisor各种成熟的技术,来满足容器应用的企业级需求,如HA,SDN, 热迁移等等。在运维管理上,容器和虚拟机可以无差别的统一管理。因为用户大多已经广泛使用虚拟机,统一的管理将给用户带来巨大的便利。下面是vCenter的截图,那个长串字符的虚机就是Container,名称是它的UUID。可以看到,容器和其他虚拟机可以一并管理。

我们相信,“虚机即容器”的方法将会成为企业、公有云等注重安全性的用户优先考虑的方案。VIC项目刚刚在上周开源:

https://github.com/vmware/vic

企业镜像管理Registry系统

容器生命周期中除了有动态运行的容器,也有静态存放的镜像。接下来,给大家分享的是容器应用另一个关键环节:镜像管理。镜像是容器生命周期的核心,容器应用开发和运维离不开镜像仓库Registry。最简单易用的Registry服务就是公有云服务Docker Hub了。

虽然使用方便,公有云中的镜像管理也存在一些问题,首先就是私密性,或者说IP(知识产权)的安全性无法保证。再就是效率,如果每次push和pull都往公有云里面跑,需要消耗大量时间,不利于持续集成和快速迭代。因此,我们发现绝大多数容器用户都建立了私有的Registry服务。

在一个实际的开发或生产系统中,镜像管理往往还需要关注几个问题:

1.权限管理,不是任何人都可以访问任意镜像。

2.审计功能,什么人何时做过什么镜像操作,可以追溯。

3.镜像同步和复制的功能,比如从开发环境推送到生产环境,从一个机房到另一个机房等。

目前开源的Registry解决方案不多,我们VMware的中国团队最近开源企业级Registry项目Harbor,就是解决上述问题。开源仅仅一个月,在GitHub上就获得400+个stars的支持,包括来自中国和世界各地的用户。地址:

https://github.com/vmware/harbor

Harbor主要功能包括:

  • 友好的图形管理界面
  • LDAP/AD用户集成
  • RBAC权限管理
  • 日志和审计
  • 原生支持中文,符合企业需求
  • REST API ,方便与其他平台集成
  • 镜像复制 (roadmap)

Harbor的架构图如下:

从上图可以看到,我们在Docker开源的registry项目上加上了认证(auth),管理界面(UI),日志和API等功能模块,并统一使用了Nginx做反向代理。这些都是在实际使用和运维中非常需要的功能,并且也是Docker开源Registry缺失的部分。

Harbor界面样例展示:

欢迎大家使用和反馈意见,可到GitHub上的Issues区和我们互动。也可以关注公众号:“亨利笔记”,在后台发信息,加入Harbor开源项目群交流。

Q&A

Q1:VIC 和Harbor 之间的关系是什么呢?

A1:是 VMware 两个开源项目,一动一静:VIC是负责容器和虚拟机统一运行,Harbor 负责容器镜像管理功能。

Q2:VIC 能像虚拟机一样处理网络?

A2:可以。所有虚拟机方面的网络功能都可以用于VIC。

Q3:VIC是否使用Docker 一样的联合文件系统,是否像 Docker 一样快速交付。

A3:VIC使用了linked Clone的 VMDK 文件形式,也是分层的,因此可以节约空间,可以快速启动。

Q4:VMware 在VM 和 VIC间将如何帮助客户取舍?

A4:传统应用可继续使用 VM,新一代云应用,可考虑VIC.

Q5:每个轻量级 VM 中跑一个Docker 吗?

A5:每个虚拟机只跑应用,没有 Docker Engine,也没有 linux Container。

Q6:VM 与VIC 可以通信吗?VIC内有服务自动发现机制吗?

A6:可以通信。没有服务发现。

Q7:使用 ladp 认证,用户管理由ladp 服务器统一管理,建议把用户删除功能禁用,否则导致用户信息不一致,我们在 Harbor 删除用户后,该用户就永久不能使用了,必须清理数据库。

A7:这个问题有用户反映,已经在改进,请在 Github 上参与讨论。谢谢。

Q8:网络模型是怎么样的,经过这么多层包裹,网络性能如何保证的。

A8:VIC 的网络就是ESX 虚拟机的网络,性能没有问题。

Q9:感觉VIC挺好的,目前VIC有什么参考资料?部署、管理方面可以借鉴 ?

A9:目前已经有 Github 上的文档,也可以参考我公众号上的文章。

Q10:Harbor 能给原生Docker 用吗?

A10:可以。Harbor 本身就是容器化的应用。

Q11: 哪个 ESXi版本可以支撑VIC?

A11:ESX 6.0 以上

Q12:直接跑应用,25M 的系统能满足所有应用吗?

A12:25MB 是内核在磁盘上的大小,在内存中很少空间,大部分内存留给应用了。

Q13:内存、CPU、磁盘也通过VM管理?

A13:对的。和虚拟机统一管理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亨利笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 企业容器和虚拟机融合技术
  • 企业镜像管理Registry系统
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档