上海——Docker&Kubernetes技术沙龙在海置风投大楼6层大会室召开,本次活动由车速云承办,来自各行业对Docker和Kubernetes感兴趣的约130名技术人出席了这次活动。
Docker容器技术已在云估算市场中轰动一时了,而诸多主流供应商则面临着技术落后的境况。这么,是哪些让Docker容器技术显得这么受欢迎呢?对于刚入门的菜鸟来说,容器技术可实现不同云估算之间应用程序的可移植性,以及提供了一个把应用程序分拆为分布式组件的方式。据悉,用户还可以管理和扩充这种容器成为集群。
在这样的背景下,腾讯互联网基础服务运维负责人孙亮、Hyper联合创始人&CTO王旭、时速云联合创始人杨乐、搜狗应用云平台中级工程师裴彤以及数人科技COO谢乐冰莅临现场,给现场观众带来了精彩的技术分享。
本次技术沙龙由车速云联合创始人王磊主持,对你们能在周六抽时间出席这次Docker&Kubernetes技术沙龙表示欢迎和诚恳的谢谢。
1.腾讯云——容器在社交网路技术营运的应用
腾讯互联网基础服务运维负责人孙亮从无状态服务器和运维体系、容器虚拟化实现,隔离和生产、Docker应用浅尝这三个方面介绍了腾讯在社交网路技术营运中对容器的应用。
在隔离方案的描述中,孙亮提及资源隔离主要是通过namespace进行环境隔离,通过cgroup进行资源隔离,但是她们禁用了swap交换空间,这样可以将隔离做的愈发彻底。对于网路,她们主要使用的是Docker的bridge网路形式,时常也会用到host网路形式,而对于net这些网路方法基本不会使用,由于在IP获取方面存在一定的难度。对于内核提高方面,她们将CPU、内存做到了对子机不可见,由于这样可以兼容网管监控,但是为了避免母机进程数过多,她们限制了子机的进程总量。
最后,在简单介绍“推荐腾讯虚拟机Docker平台——GAIA”的整体构架后,有位朋友问到了腾讯云中Docker容器的热迁移是如何实现的,孙亮解答说关键点在于解决了文件拷贝速率的问题。
2.Hyper——Hyper:用虚拟机作为Pod的边界
Hyper的CTO王旭首先介绍Docker是由Container(LXC)加上LayeredImage(AUFS)构成的一个以应用为核心的工具,他对Docker的理解是一个应用以及这个应用所需环境的封装。由此,他引出了Hyper是由Hypervisor加上DockerImage构成的一种以应用为中心的虚拟化,Hyper直接在hypervisor上启动容器。
接着,王旭给你们展示了Hyper的性能和开支,尽管启动时间没有达到Docker容器的水平,并且相对于虚拟机的启动速率来说快了好多,大约是350到500ms。对于Hyper的主要工作方法,他介绍到Hyper降低了虚拟机这中学间层(现今大伙基本是在虚拟机之上运行Docker)linux定时器,使用Pod将相关的容器一次性都启上去,让那些容器共享IPC和Netns,这样那些相关的容器就具备了挺好的通讯性能。
最后docker容器与容器云,王旭介绍了HyperStack,这个集Kubernetes、Hyper、Neutron和Openstack为一体的工具,并表示他对CaaS将成为下一个云估算主流的平台的信心。
3.车速云——Kubernetes分布式容器集群管理的神器
车速云联合创始人杨乐以容器集群管理模型为切入点,介绍了Kubernetes的目的就是为了管理容器集群,包括资源调度、生命周期、健康检测、实例伸缩模块等。Kubernetes可以见母机集群组成一个大的资源池,通过资源调度模块进行资源的分配。同时,将母机集群组成了一个整体的SDN虚拟网路,为容器提供了跨机通讯,而从提供了容器的跨机服务。
接着,杨乐给你们详尽介绍了Kubernetes的基本概念docker容器与容器云,包括Pod、RC(ReplicationController)、Services和Label。最后,他提到了Kubernetes的优势及特点,主要是解决了Docker上的一些不足,主要是:
网路模型上,做到容器的跨主机互通,构建了一个整体的SDN虚拟网路,使用NAT做外网映射;
服务发觉上,主要是通过设置环境变量和安装插件;
资源限制上,主要是限制了Docker的CPU、内存等资源;
储存上,主要是解决了Pod重启数据遗失和同一Pod中容器共享储存的问题。
4.搜狗——把Docker打导致虚机
搜狗应用云平台中级工程师裴彤在介绍完自己以后,以“铁路轨距的故事”作为引子,引出了搜狗工程师们对Docker的一些想法,即Docker的理念很前卫,而且不适宜现有的开发和运维,不能兼容一些平台及工具,所以,她们想将Docker打导致一种虚拟机,因而可以从传统虚拟机平滑地过渡到Docker上。
接着,裴彤介绍了从Docker弄成虚拟机的整个过程,主要包括:
(1)将Container加入到虚拟机的cgroup中;
(2)网路上,使用自定义的bridge,将Container的网路方法设置为none,之后自己指定container的IP、子网网段和网段,并将这种配置讲到Dockerenv中,最后创建vethpair,打通集线器和container之间的通讯;
(3)储存上,使用宿主机的本地储存,借助cgroup对lv卷进行iops、bps的限制;
(4)对于Metrics信息,分为两方面。一方面,对于CPU和显存的相关信息从cgroup中进行搜集;另一方面,对于网卡流量,从宿主机的/proc/net/dev上手机Containervethpair对端的流量,因为vethpair的特点,对端流入流量即为Container流出流量,而对端的流出流量即为Container的流入流量。
“有了虚拟机后,就可以进行集群的建立,主要是使用数据库记录宿主机、虚拟机和IP资源池等信息,之后编撰程序进行虚拟机的增删改查以及IP的动态分配,因而建立了一个IaaS平台”裴彤介绍说,基于这个IaaS平台,可以进行以下三种用途:
(1)取代部份KVM虚拟机;
(2)构造一个PaaS平台,从应用视角出发,对Docker虚拟机进行组织管理;
(3)建立MySQL数据库云。
5.数人科技——微服务实践:建立分布式爬虫系统
数人科技COO谢乐冰主要是以一个项目总监的角度介绍了她们的分布式爬虫系统。首先,他介绍了分布式和微服务的有点,主要包括:
(1)特定模块单独开发与测试;
(2)容器对特定模块进行纵向扩张;
(3)服务(及代码)的可重用;
(4)离线与在线可以混和布署。
在介绍完分布式爬虫系统的CheckList(包括服务单元功能单一、计算模块要做到“无状态”、任何服务不能单点必须弄成集群、模块间插口尽量异步、分布式配置管理以及各个层面的监控与日志方案)后,谢乐冰给我们分享了一个经验。
“不要在一个Container中加载一个过重的进程中国linux,可以将这个进程前馈成多个轻量的进程,分别运行在不同的Container中,由于Container本身就是比较轻量的,所以尽量让Container中运行轻量的进程。”
最后,谢乐冰以“朝阳区群众”为例,提出日志与监控的重要性,并介绍了分布式爬虫系统中的日志与监控。