7月19日下午,Docker & Kubernetes技术沙龙在海置创投大厦6层会议室举行,本次活动由时速云主办,来自各行业对Docker和Kubernetes感兴趣的约130名技术人参加了此次活动。在本次活动中,腾讯互联网基础服务运维负责人孙亮、Hyper联合创始人&CTO王旭、时速云联合创始人杨乐、搜狗应用云平台高级工程师以及数人科技COO谢乐冰给大家带来了精彩的技术分享。
本次技术沙龙由时速云联合创始人王磊主持,对大家能在周末抽时间参加此次Docker & Kubernetes技术沙龙表示欢迎和衷心的感谢。
腾讯互联网基础服务运维负责人孙亮从无状态服务器和运维体系、容器虚拟化实现,隔离和生产、Docker应用浅尝这三个方面介绍了腾讯在社交网络技术运营中对容器的应用。
在隔离方案的描述中,孙亮提到资源隔离主要是通过namespace进行环境隔离,通过cgroup进行资源隔离,而且他们禁用了swap交换空间,这样可以将隔离做的更加彻底。对于网络,他们主要使用的是Docker的bridge网络方式,偶尔也会用到host网络方式,而对于net这种网络方式基本不会使用,因为在IP获取方面存在一定的难度。对于内核增强方面,他们将CPU、内存做到了对子机不可见,因为这样可以兼容网管监控,并且为了防止母机进程数过多,他们限制了子机的进程总数。
最后,在简单介绍“推荐腾讯虚拟机Docker平台——GAIA”的整体架构后,有位同学问到了腾讯云中Docker容器的热迁移是怎么实现的,孙亮解答说关键点在于解决了文件拷贝速度的问题。
Hyper的CTO王旭首先介绍Docker是由Container(LXC)加上Layered Image(AUFS)构成的一个以应用为核心的工具,他对Docker的理解是一个应用以及这个应用所需环境的封装。由此,他引出了Hyper是由Hypervisor加上Docker Image构成的一种以应用为中心的虚拟化,Hyper直接在hypervisor上启动容器。
接着,王旭给大家展示了Hyper的性能和开销,虽然启动时间没有达到Docker容器的水平,但是相对于虚拟机的启动速度来说快了很多,大概是350到500ms。对于Hyper的主要工作方式,他介绍到Hyper减少了虚拟机这一中间层(现在大家基本是在虚拟机之上运行Docker),使用Pod将相关的容器一次性都启起来,让这些容器共享IPC和Netns,这样这些相关的容器就具备了很好的通信性能。
最后,王旭介绍了HyperStack,这个集Kubernetes、Hyper、Neutron和Openstack为一体的工具,并表示他对CaaS将成为下一个云计算主流的平台的信心。
时速云联合创始人杨乐以容器集群管理模型为切入点,介绍了Kubernetes的目的就是为了管理容器集群,包括资源调度、生命周期、健康检查、实例伸缩模块等。Kubernetes可以见母机集群组成一个大的资源池,通过资源调度模块进行资源的分配。同时,将母机集群组成了一个整体的SDN虚拟网络,为容器提供了跨机通信,而从提供了容器的跨机服务。
接着,杨乐给大家详细介绍了Kubernetes的基本概念,包括Pod、RC(Replication Controller)、Services和Label。最后,他谈到了Kubernetes的优势及特征,主要是解决了Docker上的一些不足,主要是:
搜狗应用云平台高级工程师裴彤在介绍完自己之后,以“铁路轨距的故事”作为引子,引出了搜狗工程师们对Docker的一些看法,即Docker的理念很前卫,但是不适合现有的开发和运维,不能兼容一些平台及工具,所以,他们想将Docker打造成一种虚拟机,从而可以从传统虚拟机平滑地过渡到Docker上。
接着,裴彤介绍了从Docker变成虚拟机的整个过程,主要包括:
1. 将Container加入到虚拟机的cgroup中;
2. 网络上,使用自定义的bridge,将Container的网络方式设置为none,然后自己指定container的IP、子网掩码和网关,并将这些配置写到Docker env中,最后创建veth pair,打通网桥和container之间的通信;
3. 存储上,使用宿主机的本地存储,利用cgroup对lv卷进行iops、bps的限制;
4. 对于Metrics信息,分为两方面。一方面,对于CPU和内存的相关信息从cgroup中进行收集;另一方面,对于网卡流量,从宿主机的/proc/net/dev上手机Container veth pair对端的流量,由于veth pair的特性,对端流入流量即为Container流出流量,而对端的流出流量即为Container的流入流量。
“有了虚拟机后,就可以进行集群的构建,主要是使用数据库记录宿主机、虚拟机和IP资源池等信息,然后编写程序进行虚拟机的增删改查以及IP的动态分配,从而构建了一个IaaS平台”裴彤介绍说,基于这个IaaS平台,可以进行以下三种用途:
1. 替代部分KVM虚拟机;
2. 构造一个PaaS平台,从应用视角出发,对Docker虚拟机进行组织管理;
3. 构建MySQL数据库云。
数人科技COO谢乐冰主要是以一个项目经理的角度介绍了他们的分布式爬虫系统。首先,他介绍了分布式和微服务的有点,主要包括:
1. 特定模块单独开发与测试;
2. 容器对特定模块进行横向扩张;
3. 服务(及代码)的可重用;
4. 离线与在线可以混合部署。
在介绍完分布式爬虫系统的CheckList(包括服务单元功能单一、计算模块要做到“无状态”、任何服务不能单点必须做成集群、模块间接口尽量异步、分布式配置管理以及各个层面的监控与日志方案)后,谢乐冰给我们分享了一个经验。
“不要在一个Container中加载一个过重的进程,可以将这个进程解耦成多个轻量的进程,分别运行在不同的Container中,因为Container本身就是比较轻量的,所以尽量让Container中运行轻量的进程”。
最后,谢乐冰以“朝阳区群众”为例,提出日志与监控的重要性,并介绍了分布式爬虫系统中的日志与监控。
本次沙龙PPT已经上传至微盘。