3月12日下午,由[时速云][3]主办的Docker&Kubernetes技术沙龙在中关村E世界如期举行。本次沙龙的分享主题更加多样化,从容器云生态到kubernetes外服服务接入,细节处探索Auto Scaling的机制和实现,多元化到docker中一键部署OpenStack。
![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/03/%E6%B2%99%E9%BE%99%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB1-300x169.png)
以下是干货内容总结:
(PPT链接[[点击此处即可下载PPT][1]])
### 1、深入浅出容器云(黄启功)
分享嘉宾:黄启功,时速云创始人,云计算忠实拥趸,一直致力于打造更好的云。他的分享涉及到容器云的方方面面,也涵盖了从BlueMix、CloudFoundry到docker和kubernetes等工具的变迁。
黄启功的分享是从以下四个方面展开的:
● 容器云初探:容器云恰当地解决了传统PaaS难以解决的业务诉求,这包括快速上线、 故障探测和发现、故障隔离、水平扩展等,而解决的法宝正是持续交付、微服务、DevOps等理念的落地。基于容器的解决方案(如Docker和Kubernetes)践行了这些理念,容器云的诸多特征(高效虚拟化、微服务支持等),及其在应用生命周期中的功能(服务发现、负载均衡、灰度升级等),满足了当前IT的业务诉求。
![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/03/%E6%B2%99%E9%BE%99%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB2-300x230.png)
● 利用容器云打造持续交付体系:这个环节通过一个demo展示了从代码commit、自动化构建到应用部署的整个流程,充分体现了容器云给持续交付带来的革命性改变。
● 容器编排:基于Kubernetes的容器云支持Pod和Stack两个级别的编排。Pod级别的编排是指在同一个Pod中运行多个实现功能互补的container,每个container实现简单的功能,多个container通过localhost方式互相访问,其优势是功能解耦和分离,利于持续升级和部署,缺点是Pod中的多个容器只能运行在同一个宿主机上;Stack级别的编排支持更为复杂的大型应用,应用内的多个微服务可以分布在不同的机器上,通过环境变量和REST API相互访问。
● 构建私有Docker主机集群:集群可以充分整合物理机、虚拟机或云主机,将它们构建成一个私有PaaS平台,对开发者和运维提供一套一致的管理面板,以管理容器、镜像、监控和日志报警等。
### Q&A:
1.对于跨数据中心的集群,比如AWS和阿里云上都有机器,会不会有网络延迟?
答:公有云的网络状况不一致,性能损耗比较明显,不建议跨datacenter
2.什么样的互联网企业比较适合使用kubernetes?
答:首先,使用windows的企业不适合;由于容器云是面向应用的平台,kubernetes是核心工具,因此绝大多数企业都可以使用。
### 2.Kubernetes集成外部服务实践(柴宗三)
分享嘉宾:柴宗三,亚信大数据云平台部高级研发工程师。目前负责亚信DataFoundry大数据PaaS云平台。他分享了亚信在将后端服务(backend service)接入kubernetes的实践,他的demo里包含了诸多实战经验,令现场的小伙伴们大饱眼福。
Kubernetes不同组件的交互是异步的,不同组件的功能解耦做得很好。APIServer的功能是接收外部的rest请求,读写etcd中的数据,但不做具体的操作;kube-controller-manager监听Replication Controller的变化,并创建对应的Pod,使其达到期望的状态;kube-scheduler根据节点的资源和限制条件将pod分配给特定的kubelet;kubelet作为daemon运行在每个slave节点上,用来维持节点上的容器,保持与APIServer、etcd的数据同步。
对于backend service,具有持久化、插件化、服务化的特点。对于PaaS平台的backend service,尤其要应对需求多样、按需分配等需求,开箱即用也已成为标配。为了满足这些需求,backend service必须遵循一些通用的规范,亚信的PaaS平台采用了CloudFoundry的规范(如下)。通过REST API的方式,极大方便了Resource Register、Controller Handler、Api Router、CLI 的实现。在后面的demo中,柴宗三演示了如何CloudFoundry规范与kubernetes的完美结合(沙龙现场观众福利)。
![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/03/%E6%B2%99%E9%BE%99%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB3-300x107.png)
### Q&A:
1.Kubernetes的rolling-update是否允许修改镜像和容器中的环境变量?
答:rolling-update允许修改replicas的值,也可以修改镜像和容器运行时环境变量。
### 3.Kubernetes Graceful Rolling-update (杭晨)
分享嘉宾:杭晨,滴滴出行云基础架构技术专家,擅长互联网高性能分布式服务架构,熟悉各类分布式存储,目前专注于对docker&kubernetes在优化滴滴开发,发布流程的应用。就如何保证服务升级过程中也能always available话题,杭晨进行了深入的分享。他的分享包括三个方面:正常升级的弊端、GraceUpdate的优势、kubernetes中如何实现GraceUpdate。
通常服务升级是这样的:1. 关闭旧的server;2.替换二进制文件(或更新产品代码、替换war包等);3. 启动新的server。这样的升级会带来两个问题:1. 现存的连接会断开,直接影响用户体验;2. 新的server启动之前,服务是unavailable的(真空期)。为了避免这样的问题,所以出现了GraceUpdate。
GraceUpdate定义如下:while updating a socket based server (including stop old, start new), graceful updating make sure no connection will be dropped or terminated。对于go语言实现的server,facebook推出了名为grace的库(https://github.com/facebookgo/grace), 可以便捷地实现graceful terminate和restart。
![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/03/%E6%B2%99%E9%BE%99%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB4-300x223.png)
kubernetes针对graceful update提供了更高层次的支持,包括针对Pod的rolling update和horizontal pods autoscaler,对于rolling-update的策略,这里不做详细说明,大家可以参考ppt。
### 4.Kolla:在Docker中运行OpenStack(张雷)
分享嘉宾:张雷,OpenStack Kolla项目核心开发人员,早期 OpenStack 从业者,基于 OpenStack 的私有云平台解决方案和二次开发,并策划和实施过多个私有云平台的搭建。该topic主要讲解 Kolla 的工作原理,日志,权限,安全,配置文件等的处理方式,以及使用 Docker 过程中踩过的坑及解决方案。张雷的分享分为下面五个模块,下面我们会一一介绍。
![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/03/%E6%B2%99%E9%BE%99%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB5-300x149.png)
此次沙龙的参与者主要在容器方面,对OpenStack可能不太熟悉,这里会详细说一下。OpenStack是AWS的开源版,它是一个云操作系统,可以管理数据中心的计算、存储和网络资源池,所有的管理操作都可以通过一个web终端来进行,它旨在成为一个易于实现、可扩展的、可同时满足公有云和私有云需求的开源云平台。OpenStack由Swift、Nova、KeyStone、Cinder等核心组件构成,另外还有众多的插件支持。
![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/03/%E6%B2%99%E9%BE%99%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB6-300x146.png)
由于OpenStack本身比较复杂,运维困难,催生了一批部署工具,Kolla便是其中之一。Kolla相对于其他部署工具更为简单,它基于docker,可直接提供可重用的组件,采用ansible进行配置管理,简化了运维管理。
Kolla在实现过程中使用了docker,考虑到了不可变基础设施、docker镜像的可移植性、秒计启动和强大的社区支持;缺点也比较明显,如难以审计等,但远少于优点。Kolla的架构如下,对kolla感兴趣的话,可以查看github(https://github.com/openstack/kolla/), 也欢迎贡献代码。之后,张雷使用kolla在5min内搭建了一个openstack,也将使用过程中遇到的坑分享出来(详情可下载ppt)。
![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/03/%E6%B2%99%E9%BE%99%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB7-300x179.png)
### Q&A:
1.关于相互依赖的容器,restartPolicy设置为always会出现一些问题,这块有没有比较优雅的解决方案?
答:绝大多数情况下容器退出是由于内存、磁盘或网络问题,都是需要人工排查的。我们这边仍然将restartPolicy设置为always,出现问题人工排查解决问题以后,检查存在依赖关系的应用是否正常运行。
通过第三期Docker与Kubernetes沙龙的分享,我们看到了对kubernetes特性的深层次解读,也看到了它与传统工具和服务的集成。Kubernetes 1.2即将推出,届时将会有更多的特性发布,性能上和支持的集群规模也会有飞跃的提升,让我们拭目以待。
沙龙最后透露:3月30日,时速云“有‘容’乃大”新品发布会将在海润艾丽华举行,真诚欢迎各位参加。
点击 [立即报名][2] 即可参加
[1]:http://pan.baidu.com/s/1qXtYssk
[2]:http://form.mikecrm.com/f.php?t=gPQU1Y
[3]:https://www.tenxcloud.com/
有疑问加站长微信联系(非本文作者)