3 月 12 日下午,由时速云主办的 Docker&Kubernetes 技术沙龙在中关村 E 世界如期举行。本次沙龙的分享主题更加多样化,从容器云生态到 kubernetes 外服服务接入,细节处探索 Auto Scaling 的机制和实现,多元化到 docker 中一键部署 OpenStack 。
以下是干货内容总结:
( PPT 链接[点击此处即可下载 PPT])
分享嘉宾:黄启功,时速云创始人,云计算忠实拥趸,一直致力于打造更好的云。他的分享涉及到容器云的方方面面,也涵盖了从 BlueMix 、 CloudFoundry 到 docker 和 kubernetes 等工具的变迁。
黄启功的分享是从以下四个方面展开的:
● 容器云初探:容器云恰当地解决了传统 PaaS 难以解决的业务诉求,这包括快速上线、 故障探测和发现、故障隔离、水平扩展等,而解决的法宝正是持续交付、微服务、 DevOps 等理念的落地。基于容器的解决方案(如 Docker 和 Kubernetes )践行了这些理念,容器云的诸多特征(高效虚拟化、微服务支持等),及其在应用生命周期中的功能(服务发现、负载均衡、灰度升级等),满足了当前 IT 的业务诉求。
● 利用容器云打造持续交付体系:这个环节通过一个 demo 展示了从代码 commit 、自动化构建到应用部署的整个流程,充分体现了容器云给持续交付带来的革命性改变。
● 容器编排:基于 Kubernetes 的容器云支持 Pod 和 Stack 两个级别的编排。 Pod 级别的编排是指在同一个 Pod 中运行多个实现功能互补的 container ,每个 container 实现简单的功能,多个 container 通过 localhost 方式互相访问,其优势是功能解耦和分离,利于持续升级和部署,缺点是 Pod 中的多个容器只能运行在同一个宿主机上; Stack 级别的编排支持更为复杂的大型应用,应用内的多个微服务可以分布在不同的机器上,通过环境变量和 REST API 相互访问。
● 构建私有 Docker 主机集群:集群可以充分整合物理机、虚拟机或云主机,将它们构建成一个私有 PaaS 平台,对开发者和运维提供一套一致的管理面板,以管理容器、镜像、监控和日志报警等。
1.对于跨数据中心的集群,比如 AWS 和阿里云上都有机器,会不会有网络延迟?
答:公有云的网络状况不一致,性能损耗比较明显,不建议跨 datacenter
2.什么样的互联网企业比较适合使用 kubernetes ?
答:首先,使用 windows 的企业不适合;由于容器云是面向应用的平台, 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 的完美结合(沙龙现场观众福利)。
1.Kubernetes 的 rolling-update 是否允许修改镜像和容器中的环境变量?
答: rolling-update 允许修改 replicas 的值,也可以修改镜像和容器运行时环境变量。
分享嘉宾:杭晨,滴滴出行云基础架构技术专家,擅长互联网高性能分布式服务架构,熟悉各类分布式存储,目前专注于对 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 。
kubernetes 针对 graceful update 提供了更高层次的支持,包括针对 Pod 的 rolling update 和 horizontal pods autoscaler ,对于 rolling-update 的策略,这里不做详细说明,大家可以参考 ppt 。
分享嘉宾:张雷, OpenStack Kolla 项目核心开发人员,早期 OpenStack 从业者,基于 OpenStack 的私有云平台解决方案和二次开发,并策划和实施过多个私有云平台的搭建。该 topic 主要讲解 Kolla 的工作原理,日志,权限,安全,配置文件等的处理方式,以及使用 Docker 过程中踩过的坑及解决方案。张雷的分享分为下面五个模块,下面我们会一一介绍。
此次沙龙的参与者主要在容器方面,对 OpenStack 可能不太熟悉,这里会详细说一下。 OpenStack 是 AWS 的开源版,它是一个云操作系统,可以管理数据中心的计算、存储和网络资源池,所有的管理操作都可以通过一个 web 终端来进行,它旨在成为一个易于实现、可扩展的、可同时满足公有云和私有云需求的开源云平台。 OpenStack 由 Swift 、 Nova 、 KeyStone 、 Cinder 等核心组件构成,另外还有众多的插件支持。
由于 OpenStack 本身比较复杂,运维困难,催生了一批部署工具, Kolla 便是其中之一。 Kolla 相对于其他部署工具更为简单,它基于 docker ,可直接提供可重用的组件,采用 ansible 进行配置管理,简化了运维管理。
Kolla 在实现过程中使用了 docker ,考虑到了不可变基础设施、 docker 镜像的可移植性、秒计启动和强大的社区支持;缺点也比较明显,如难以审计等,但远少于优点。 Kolla 的架构如下,对 kolla 感兴趣的话,可以查看 github ( https://github.com/openstack/kolla/), 也欢迎贡献代码。之后,张雷使用 kolla 在 5min 内搭建了一个 openstack ,也将使用过程中遇到的坑分享出来(详情可下载 ppt )。
1.关于相互依赖的容器, restartPolicy 设置为 always 会出现一些问题,这块有没有比较优雅的解决方案?
答:绝大多数情况下容器退出是由于内存、磁盘或网络问题,都是需要人工排查的。我们这边仍然将 restartPolicy 设置为 always ,出现问题人工排查解决问题以后,检查存在依赖关系的应用是否正常运行。
通过第三期 Docker 与 Kubernetes 沙龙的分享,我们看到了对 kubernetes 特性的深层次解读,也看到了它与传统工具和服务的集成。 Kubernetes 1.2 即将推出,届时将会有更多的特性发布,性能上和支持的集群规模也会有飞跃的提升,让我们拭目以待。
沙龙最后透露: 3 月 30 日,时速云“有‘容’乃大”新品发布会将在海润艾丽华举行,真诚欢迎各位参加。
点击 立即报名 即可参加
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.