使用Kubernetes 构建自动化平台

Tenxcloud · · 1427 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

编者按:本文由Wercker CTO Andy Smith 分享,他分享了Kubernetes如何帮助他们节省时间并加速开发。本文是关于Kubernetes 1.3新功能一系列深入文章的第九篇。 我们在Wercker运行数百万容器执行用户的CI/ CD工作。这些容器的生命周期大多是短暂的,构建、测试和部署完成后,这些容器的生命周期随之结束。 虽然多数容器的生命是短暂的,但我们倾向于持续运行我们的基础设施。通常情况下我们需要跨多节点运行多个容器,所以一个高度可扩展的调度程序就显得非常有必要。我们决定使用Kubernetes。 Wercker 是容器中心自动化平台,它帮助开发人员构建、测试并部署应用程序。 我们支持任何数量的pipelines,从代码构建、测试微服务间的API协议、上传镜像和部署到调度器。 所有这些pipeline都运行在Docker容器中,而且每个环节都是一个Docker容器。 当然,我们使用Wercker自身来构建Wercker并部署到Kubernetes中! ## 概述 我们是一个运行云原生应用的平台,在隔离上做了很多设计决策。在底层,我们使用CoreOS和cloud-init 启动一个异构节点的集群,我把这些节点命名为Patricians(贵族)、Peasants(农民)、 Controller(控制器)。 ![](http://blog.tenxcloud.com/wp-content/uploads/2016/08/Wercker.jpg) 对于Controller 节点,也许我们应该使用Constables(警察)这个叫法。 贵族节点占据我们基础设施的一大部分,这些节点有适当的网络接口与后端服务通信,同时还作为各种负载均衡器的 endpoints。 **这些节点上还运行着下面三类服务:** 1.日志搜集服务,并发送到日志服务 2.很多用于报告和处理job运行结果的服务 3.处理API 调用的微服务 农民节点用于运行公共服务,包括处理job的Pod,它用于从job 队列读取job,并声称新的pod以处理job的执行。 job 本身是开源CLI工具的化身,你可以用Docker安装并运行在你的笔记本上。 农民节点对基础设施的访问权限十分有限,运行job的容器也是高度隔离的。 Controllers是控制器,对于这类节点的功能,你尽管望文生义就对了。 ## 动态Pods 我们的服务对Kubernetes API 有重度依赖,每一个job启动时,系统都会动态创建Pod,这个Pod为job提供了运行环境。 从队列中获取 job 描述后,我们定义了一个新的 pod,新的Pod 包含执行检查代码、缓存管理、执行job并上传结果的相关环境。 我们启动pod,监控它的进程,并在 job 结束后销毁它。 ## Ingresses 为了给 HTTP API 提供后端服务,并提供自注册功能,我们使用了Kubernetes 的 Ingress 功能。 设置 Ingress 并不是很简单,但是通过阅读nginx 例子,我们最终发现了一个将后端服务连接到前端的好方法。 ## 1.3 即将发布的功能 尽管我们把pods和容器当成是短暂的,并期望它能够在故障时快速重启,同时我们也期待使用Pet Sets 和Init Containers 优化我们的工作流。 对于Minikube得到官方支持,我们也很欣慰,因为它提高了我们的本地测试和开发的效率。 ## 结论 Kubernetes在管理跨节点的多个容器时,为我们省掉了大量的关键工作。 它提供了一个强大的API和工具来查看,包含多内置日志支持、度量、监控和调试。 仅服务发现和网络这两项就为我们节省了很多时间,大大加速了开发进度。 祝 Kubernetes 正式版一周年快乐,也祝愿它越来越好:)。 本文由[时速云][1]翻译,如若转载,需注明转载自“[时速云][1]” 原文链接:http://blog.kubernetes.io/2016/07/automation-platform-at-wercker-with-kubernetes.html [1]:https://www.tenxcloud.com/

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1427 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传