品高云

技术特刊 | 一个SDNer眼中的Docker

技术特刊主要刊载品高云诸多技术大咖的技术干货与技术观点,与大家一起交流学习云知识。欢迎小伙伴们在留言区提出你们的问题与看法,和技术大咖进行互动!


今天与大家分享知识与观点的大咖是品高云云架构产品部的工程师——林冬艺



大咖介绍


林冬艺

从SDN概念诞生来一直在关注和研究,目前在BingoCloud SDN云网络团队任职,主要负责云网络、云网络安全、NFV、高性能云网络等的架构与设计。目前,BingoCloudOS产品的SDN相关功能主要来自林冬艺所在团队 。



在不少的交流中,我常常被问起一个问题:“你们的SDN云网络怎么支持Docker?”近几年Docker的轻量化,快速部署的优势,得到了很多企业用户的青睐。甚至有不少人,会拿容器技术与传统的虚拟化进行多维度的PK,当然这样的PK是没有结果的。技术活干久了,很明白一个道理,没有一个技术能解决所有的问题。


Docker的发展对云计算确实带来不少冲击,前不久的时速云,Daocloud,蜂巢云等存容器技术云更是火红一时。但是Docker自身的底层架构未完善,导致发展存在很多瓶颈。我们一直以来的观点是不应该把虚拟化与容器放在对立面看待。云计算IaaS层有足够的能力给Docker提供很好的支撑,Docker应该更多地考虑如何发挥自身的轻和快的优势,底层网络问题应该交给云平台处理。这是我们面对Docker技术或容器技术该有的态度:“拥抱取暖,整合创新”


我们需要给Docker一个位置,在云计算这样一个层次化非常清晰的架构体系中,Docker或容器应该放在什么位置?


如下图所示:



图中,橙色部分就是容器在云中的位置。我们先看第一个,容器和虚拟化兼容平衡,容器和虚拟机一样可以使用云平台提供的计算,存储,网络资源。这样的方案在很多项目中,被用于广泛接受。实际项目中,用户考虑的情况绝对不是单一需求的。比方说用户的大数据业务需要高性能资源,同时需要一些轻量级的应用服务等。容器化的性能基本接近物理机性能,我们认为大数据的业务,可以放在容器中运行。此外一些轻量级的应用服务,他们的刚性需求是高可用、灵活迁移,性能需求低。这样的业务放在kvm虚拟化中运行更为合适。SDN云网络负责支撑两者的网络业务。这样的方案,完全发挥的虚拟化与容器技术的优点。


说到这里,应该很多人会说Docker呢?Docker in VM是一个大课题。Docker集群运行在VMs上,Docker就需要自管网络。Docker的网络难题也由此而生。前段时间,我们在腾讯黑石云平台上部署我们自己云,那一段时间,我深深明白Docker网络的痛苦。云平台的网络是存在很多限制了,如Port-mac绑定,mac-ip绑定,ARP代理等。目前纵观所有的Docker的网络解决方案中,只有Overly类型的网络能在云上正常使用。Overly的性能消耗是不可忽视的,此外Overlay的传输数据是无法被云平台的安全设备监控的。这样确实带来不少问题。但不可否认的是,即使存在潜在问题,Docker in VM依然受到广泛的关注与认同。云平台提供的ECS服务占了很大一部分功劳。ECS服务让Docker的集群生命周期管理变得非常简单。ECR弹性容器镜像仓库实现不同租户有不同的镜像库使用权限,在私有云场景中,非常适合。



我先来总结一下Docker in VM的存在的问题:


1. Docker集群的Overlay网络消耗大,路由的网络云网络限制。


2. Docker集群的Overlay网络通讯安全设备难以识别。


3. Docker集群的网络缺乏监控手段。


4. Docker in VM经过一层虚拟化之后,丧失了Docker本身高效的特性。


我们一步一步来,先看网络问题。我们做一个大胆的假设,如果SDN云网络能管理Docker in VM网络那就是基本可以摆脱Overlay的问题。SDN需要把手伸进Docker in VM。这时候的想法很清晰了,我们SDN云网络提供弹性虚拟化网卡的能力,一台VM可以绑定多个vNIC。我们把vNic直接塞给Docker in VM。如下图:



看到这个图,我相信大家一定很兴奋,包括我自己。这就是Docker in VM结合云网络的方式。Docker可以使用云网络提供的安全组,VPC,Gateway、Route、ACL、Vpcpeering等网络功能,并且是Underlay网络,安全设备可以监控Docker in VM的流量。可以使用与VM不同的VPC,实现业务管理分离。Docker in VM无需自管网络了。云平台可以单独针对Docker in VM做流量监控。很庆幸的是,品高云最新版本已经支持vNic passthrough for Docker in VM。


还有最后一个问题,Docker in VM的性能损耗。经过一层虚拟化之后,Docker in VM的发挥不出Docker高效的特性。我们回想一下Docker为什么要in VM?因为ECS服务,通过VM创建Docker集群。在上文中我们提到过在品高云中,容器与VM是平等关系。最初设计的架构,其实我们已经支持Docker in CM。结合vNic passthrough for Docker in CM的能力,ECS服务的性能问题能够得到很好的解决。


云计算应该持有足够开放的态度,还是那句话“拥抱取暖,整合创新”。Docker 绝对不是颠覆云计算的技术。我们也不应该把Docker放在我们的对立面。大家可以看到,品高云提供的VM/CM平等化、vNic passthrough for Docker 以及 Docker in CM的功能,他们本身的设计是与本身云计算的架构没有任何冲突性,都是沿用IaaS层基础能力。将能力开放出去,这是云计算多年来最擅长的技能。




了解更多品高云信息,敬请扫码添加品高云微信客服小表妹,我们将为您提供贴心到位的企业上云顾问服务。


欢迎想提出问题的童鞋在右下方“写留言”,我们会邀请技术大咖为您进行解答噢


相关阅读:

年(gan)货大派送 | 年度热词之——SDN

啊,这只风靡全球的鲸鱼你不会还不知道吧?

品高云SDN概述 | 品高云公开课

浅谈SDN&SDN控制器 | 品高云公开课

技术干货 | 品高云的SDN实践

技术干货 | 品高云对Docker的支持



评论