Presslabs从研究到生产的Kubernetes之旅

翻译 2018年01月23日 17:42:43

原文:The Kubernetes Journey from Research to Production at Presslabs

作者:CALIN DON

翻译:无阻我飞扬

摘要:作者以自己所在Presslabs团队转向使用Kubernetes为例,介绍了使用Kubernetes的好处,分享了转换的经验。以下是译文。

这里写图片描述

Presslabs管理着WordPress主机,穿着用Django(Django是一个开放源代码的Web应用框架,由Python写成。)编写的客户仪表盘(dashboard是商业智能仪表盘的简称,它是一般商业智能都拥有的实现数据可视化的模块,是向企业展示度量信息和KPI现状的数据虚拟化工具)外衣创建了自己的堆栈。

仪表盘开始于2011年,作为一个普通的WordPress插件,允许客户支付每月的订阅。一年以后,我们用Python重写了每一个内部服务,通过Django App曝光了公开部分。这是一次重大改变,因为需要在它自己的堆栈上同样地托管它,并在其上添加开发过程。部署以“手动编写”的方式开始,接着是一系列混合bash脚本,synctool发展到用AnsibleDrone自动化部署。

第二次重写始于2014年,它涉及到将monolithic App(CSDN网站上有一篇著名的推特论战:Microservices vs. Monolithic)拆分成微服务(microservices),每一个都有它自己的API。起初,它们在虚拟机或裸机上运行。然后另一个重大的转变发生在2015年,我们规范了微服务在裸机上运行Docker容器,主要是为了开发目的。这是一次成功的重写,因此将其开源共享,对于其他寻求这种解决方案的人来说也是有意义的。

日益复杂的部署和微服务组件之间的互联,搭建一个临时环境的复杂性,无休止的维护问题,例如升级运行服务机器的底层操作系统——这些只是我们当时面临的最紧迫的一些问题。基本上,我们害怕破坏东西,这就导致了新功能部署的速度减慢和不频繁。

转换

2016年,我们开始关注容器编排工具;一年后,决定进行试验,看看是否至少能够解决上面的一些挑战。所以在这里分享一些我们转向Kubernetes时候学到的一些关键点,如果你计划或者已经在研究类似的转换,希望可以节省点时间。

首先,我们测试了Docker Swarm和Kubernetes。尽管Docker Swarm在一开始更友好,因为安装非常的容易和快速,但它没有让人感觉到生产准备就绪。例如,它将从DNS“丢失”服务,而且一些节点的CPU在没有过载的情况下也会发生尖峰。

Kubernetes在生产和一般的事情上执行的更好,但需要更高的安装工作量。从1.6版本,Kubernetes开始表现出一定的成熟度和更慷慨的功能集(诸如RBAC,动态容量配置,应用程序API),使其更适合生产,所以我们决定历经安装和配置它的痛苦。在这段旅程中,除了Kubernetes文档,我们发现两个指南特别有用:Kubernetes来之不易Kubernetes通过Ansible不那么艰难

只有当设法让Kubernetes运行起来的时候,它才能变的有趣。2017年的9月,我们开始内部服务的迁移,确保在复制它到托管栈之前,我们获得了所有的经验和最佳实践。

如果要总结经验,只有三个关键的教训,下面是想与大家分享的:

1. 部署和维护自己的集群是不必要的。

如果没有足够的需求部署和操作自己的机器,交给Kubernetes提供商托管。在AWS EKS, Azure Container ServiceGoogle Kubernetes Engine之间选择。我们选择了GKE(Google Kubernetes Engine),因为在当时的情况下,与其它提供商早期提供的托管服务相比,GKE是唯一一个感觉足够成熟的(cli和第三方工具是可用的)。

此外,尽管Kubeadm最近的beta版本可以帮助建立一个最小可行的集群,但使用它也有一定的缺点。目前,它缺乏对HA master的支持,仍然被认为是一个测试版。尽管如此,希望大家能够有足够的雄心来部署一个实验室集群并面对内部的复杂性。如果公司足够小,开发团队会感谢使用托管服务的,因为维护一个集群至少需要一名专职的工程师全情投入。

2. 使用 Helm 的Kubernetes部署服务是一个好主意

由于缺乏标准的部署方法,只能为繁琐的额外工作和可能的错误预留空间,迁移到Kubernetes的希望是还可以获得一些运行速度。

我们需要可复制和版本控制的部署,所以探讨Kubectl, Terraform和 Helm。很早从列表中把Kubectl去掉,因为它缺乏模板支持和代码重用。我们意识到将要围绕它添加很多的定制代码,使其按照需要运行。

Terraform证明更适合做基础设施的供应,对Kubernetes的支持总是滞后。例如,在这写这篇文章的时候,还没有对Kubernetes部署的支持。

3. 管理部署机密是痛苦的。

现在是时候抱怨Helm了,因为它缺少一个完整的秘密管理。幸运的是,通过SOPS,整合Helm,Helm-Secrets 插件挽救了它,这是一个通过版本控制库管理和保密的工具。唯一缺失的部分是与我们所贡献的谷歌云密钥管理服务的集成。

使用Kubernetes的好处

现在仪表盘及其服务已经完全迁移,我们对结果非常满意。总的来说,使用Kubernetes给我们带来的好处有3个关键点:

  1. 更容易部署。这直接影响了我们的生产能力,因为它加快了我们的开发周期,允许我们每天执行一些部署,而不是每周。

  2. 更好的可用性。Kubernetes真是可靠到家;我们不再担心破坏构建,零部署宕机时间成为常态。

  3. 维护更简单。不再需要为服务器升级安排停机时间,因为它运行的机器由云提供商管理。

使用Kubernetes也影响了团队的整体氛围,团队有更多的时间去研究、规划和开发其它功能,这些都是对产品成功至关重要的。

此外,我们已经为客户仪表盘的底层基础设施实现了标准化,连同自动化管理和部署。

从更广泛的角度来看,我们渴望跟上当前技术发展的步伐。至少在目前,如果你正在寻找编排容器和微服务的解决方案,Kubernetes的解决方案是值得选择的。当所有主要的云提供商选择在Kubernetes上管理服务时,你可能想了解并使用它们,以同样的方式,我们自己为托管WordPress网站提供服务。

也许最重要的一点是,企业客户将很快能够从一个更具有扩展性的WordPress的托管堆栈获益,这些WordPress的托管堆栈直接运行在Kubernetes集群。

如果你正在寻找更多关于我们迁移到Kubernetes的信息,请给我们写信

实战Docker到Kubernetes技术系列视频教程

培训对象:系统工程师、软件架构师、软件工程师、运维工程师、以及对云计算领域感兴趣的IT精英 课程目录: 第一课  为什么你需要学Docker 第二课  Docker实战之容器基础命令系列...
  • u013948190
  • u013948190
  • 2016年06月26日 14:58
  • 1888

生产环境使用kubernetes的经验

原文:http://blog.kubernetes.io/2016/02/sharethis-kubernetes-in-production.html
  • m1361459098
  • m1361459098
  • 2016年11月01日 20:38
  • 1574

在阿里云上部署生产级别Kubernetes集群

阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群。 本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级...
  • qq_34463875
  • qq_34463875
  • 2017年03月15日 16:13
  • 3173

从实验研究到产业规模化生产

现代生物反应系统(微生物发酵,动植物培养)早期着重于研发实验研究用的实验室台式发酵罐后期的目标是帮助工厂实现产业规模化 规模分为三类0.75-20升实验规模30-300升,中试规模300升一直到300...
  • qiuhao2222
  • qiuhao2222
  • 2009年07月25日 11:42
  • 383

Kubernetes生产环境经验告诉你如何实现蓝绿部署和负载均衡

编者按:Luminis Technologies从2015年初就开始将Docker和Kubernetes应用到了生产环境,本文作者为Luminis Technologies软件架构师Paul Bakk...
  • qq_26923057
  • qq_26923057
  • 2016年08月09日 11:22
  • 4372

浅谈精益生产与敏捷制造理论的发展现状及前景

摘  要:20世纪末至本世纪初,全球制造业涌现出了众多先进的制造技术与管理方法,其中以精益生产与敏捷制造倍受推崇。 关键词:精益生产;敏捷制造;理论融合         1 国外相关理论发展现状   ...
  • iamdll
  • iamdll
  • 2014年02月10日 13:19
  • 1262

如何完成从科研人员到初创企业 CEO 的转型?

吴知航 ,南京肯微弗通信技术有限公司CEO!专注无… 收录于 知乎圆桌 、 编辑推荐 •Naiyan Wang 等 157 人赞同 感谢周源兄弟的邀请!说实话有点诚惶诚恐,自己确实...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年06月16日 10:14
  • 1292

一个实习生的一天

我来实习才一天,公司里开了个会,要求我们实习生每人写一篇论文,关于项目管理,感觉真的好难,一点头绪都没有,就想起来这个发发帖子,有没有人帮帮忙啊...
  • feiying11
  • feiying11
  • 2008年04月09日 13:23
  • 47

我的前端之旅

本人广州某大学大四狗一枚,目前在广州某公司实习,做的是前端。 说起为什么做前端,我也不明白,相信很多人也跟我一样心里也无法解答这个问题。 早上跟部门大佬聊天,说起了他自己的学习方法。 他总说要多写些自...
  • Zhang_limon
  • Zhang_limon
  • 2016年12月20日 09:29
  • 217

生产数据导入测试环境碰见的一些问题

我们某一个系统的夜维出现了性能的问题,删除N张表,数据量从几万到几百万不等,现在需要3.5-4个小时,看了一下SQL AWR,有些采用了TABLE ACCESS FULL,而且是数据量百万级的表,并且...
  • bisal
  • bisal
  • 2017年08月01日 22:33
  • 457
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Presslabs从研究到生产的Kubernetes之旅
举报原因:
原因补充:

(最多只允许输入30个字)