关键摘要!iThomeContainerSummitDay2笔记大整理

本文作者为蔡宗城,原始连结:http://smalltowntechblog.com/2015/12/11/ithome-container-summit-day-2/
由iThome举办的台湾第二届Container Summit大会,第二天精彩内容包括了Kubernetes、Rancher、Docker深入剖析,Docker最新网络功能和多主机丛集建置等。
Smalltown Tech Blog接连两天整理了这次大会的参加心得。第一天重点整理请见:第一天重点回顾!iThome Container Summit Day1笔记大整理
进入到第二天的 Container Summit,今天持续将现场的第一手讯息告诉大家。
- 如何在 Kubernetes 上持续部署微服务型应用 ( Evan Brown / Google 云端解决方案架构师 )
今天 Evan 以现场实际展示的方式,详细的解说怎么利用 Kubernetes 在自己的本地端以及 GCE 上面部署 Kubernetes,运用的范例是 Evan 自己写的一个小程式,输入一个 JSON 档案,前端会输出成一个简单的网页。
Evan 在今天的演讲详细的讲解了 Kubernetes 的基本概念以及组成 Kubernetes Cluster 的各部分组件,包含 Pods, Replication Controller, Service 以及搭配 Jenkins 跟 Kubernetes 来做 Continuous Delivery,详细的解说也在会后吸引了许多人对 Kubernetes 感到有兴趣,许多听众在外面的讲师询问处都待了 30 分钟来问 Evan 问题,反应相当热烈。
- 如何搭建企业级容器服务(梁胜 / Rancher Labs 共同创办人暨首席执行官)
这场由于前一场在外面问问题花了比较多时间,大概在中场的时候才进来听,不过从中间听起来也算还可以,主要就是在讲介他们自己做了一个平台叫做 Rancher,可以在他们的平台上面跑 docker,比较特别的是它可以帮你连接各个厂商的云端平台,在上面架好 docker 平台后,用 docker machine 去连接各平台,比较有中央控管的感觉。
另外它也支援 Kubernetes 以及 docker swarm,各平台的整合性算是满不错的。连接完平台之后,它有提供像是 app store 的东西,内建了像是 elasticsearch, nginx 等普遍的应用程序,让你可以直接点完就开好服务,算是满方便的,不过他中间显示出来的设定党实在是长的有点恐怖,要我自己写感觉会很累。
- 深入理解Dockerfile、Docker映像档以及Docker容器(孙宏亮 / DaoCloud 软件工程师 )
这场演讲感觉是今天最硬的一个场次,深入的探讨了 Dockerfile, Docker Image, Docker Container 之间的关系,一开始还是免不了有一点工商时间,简单地介绍了 DaoCloud 在中国的发展,也由于一些没办法言明的原因(讲师自己说的XD)没办法连接到 DockerHub,也造就了 DaoHub 在中国的发展,他就是将一些在 DockerHub 比较热门的专案镜像复制一份到 DaoHub 以方便中国的用户来开发 Docker。
讲师提到为什么他会开始研究 Docker 源代码的原因,是因为大家每个人都着重在开发上层应用,可是他对于架构比较有兴趣,所以就一头栽进了 Docker 源代码的世界。详细内容太多了,在这边就不仔细写出来,大致上就是讲解 Docker 从 Dockerfile 怎么理解,怎么产生 Docker Image 的各个层级,之后各层级在执行起来变成 Container 之后,真实操作系统又是怎么应对 Container 里面的各个行程。
- 和信云端Container实战经验(孔祥岚 / 和信云端 首席技术顾问)
基本上就是工商时间,由于之前有听过他们的产品发表会,这次听起来跟产品发表会的时候内容差异不大,简报档也有 80% 是一样的,跟上面的 Rancher 比较不一样的地方是,客户群是指向公司内部使用,对于 multi-tenant 的部分比较重视,以及各单位或用户之间的资源限制,使用记录,权限设定方面似乎有比较多的着墨,不过在展示的时候没有展示到相关的设定,是比较可惜的部分。
- 深入了解Docker Container Networks(郭韦廷 / Docker全球开发竞赛冠军/Docker Taipei Meetup共同创办人)
讲解 Docker Network 各种模式以及怎么设定,还有新的 Network Command 跟 Overlay network,简单总结,Docker Network 分为五种,分别是 bridge, host, none, container, SDN,Docker预设是使用 bridge,Docker Network 的部分可以看作可以帮 Container 加入网络卡,可以自由指定 Container 要使用哪一些网络设定或是借由 Network command 来增删或是列出详细的设定。
另外一个 Overlay Network 的部分看来是开始要取代之前使用的 Link,也可以把Docker 分布在不同的云端服务业者之后,利用 Overlay Network 做通讯,让使用者可以真正的不受限制于单一业者。最后一个 Docket Network Plugin 的部分,是因为先前还没有像 Docker Network 这种东西的出现,各厂商或是团体就先开发了网络工具,像是 weave。
- 用Docker Swarm打造多主机丛集环境(谢宗颖 / 创科资讯 共同创办人兼研发经理)
这场接在这边实在是很好的安排,刚好上一场讲解了各种网络模式以及 overlay network,这边直接开始讲实际怎样使用。
浓缩一下重点,步骤大概是先建立一个 key-value store,可以选用很多像是 consul, etcd, zookeeper 等等,接下来先开swarm master, swarm node,设定好overlay network,之后就可以建立一个跨越不同云端服务业者的服务了。
这样打起来很简单,不过讲师也是解释了好一段时间,讲师之后应该会把演讲稿放出来,大家可以直接看文件尝试建立一个跨云端服务业者的服务。
- 最近研究 Kubernetes 比较多,就在外面跟大家一起跟 Evan 聊了好一阵子,我自己问了 Evan 几个我遇到的问题:
Q1: 有没有办法自己客制化 Kubernetes 里面的 LoadBalance 模组,因为 Kubernetes 分别支援了 AWS, GCP 等等云端业者,可以在设定好 LoadBalance 属性之后直接帮你设定好业者所属的 LoadBalance,并且把它指定好的外部 ip 或是 DNS name 传回 Kubernetes,可是公司内部是使用 Citrix NetScaler ,如果要跟 Kubernetes 整合的话势必会需要这块。
Evan: 目前为止我知道有一些人有做过类似的事情,有听过F5, Juniper, NetScaler 还有一些其他的,可是我不知道到底要怎么做,可能要看那部分的模组模组化的程度多深,才有办法看有没有办法做出这个功能。可以敲留言给我的 Twitter 我会帮你再问问看。
Q2: 最近在研究 kafka,可是我们资料中心的架构只能挂磁盘到部分机器,并没有办法所有的节点都是同样的容量的话,Kubernetes 有没有办法指定我要把某个 Pod 或是 Replication Controller 指定挂到某一种节点,像是利用 selector 来做?
Evan: 没办法,目前 Kubernetes scheduler 是看目前节点还有没有资源,像是 CPU 或是内存来选择的,并没有办法选择可以把 Pod 放到特定的节点上面跑。
补充:文章转载到 Docker Taipei 后,有热心的网友提供意见,其实是可以做到的,详细的官方文件在这边
另外在别人问的问题里面 Evan 也说到有一个新功能是Kubernetes API Server federation,目前已经在 Pre-Alpha 的阶段,大家可以期待一下,也就是这个功能出来之后,就可以在各个云端业者都建立好 Kubernetes 之后,建立的时候指定 Container 要摆放的国家或是业者,以达到就近服务或是降低成本的功效。
