Melanie Cebula谈到,Airbnb采用了内部工具和策略以支持1000多位工程师同时为Kubernetes配置和部署250多个关键服务。一个关键的推动因素是,使用标准化的环境和命名空间(以及尽可能的自动验证)从更高级的原语中抽象和生成Kubernetes配置层。

Airbnb的架构工程师Melanie Cebula在伦敦QCon大会上做了演讲,她谈到Airbnb采用了内部工具和策略以支持1000多位工程师(以每天平均大约500个部署的频率)并发配置和部署250多个关键服务给Kubernetes。一个关键的推动因素是,使用标准化的环境和命名空间(以及尽可能的自动验证)从更高级的原语中抽象和生成Kubernetes配置层。

kube-gen是Airbnb的内部工具,其可以获取服务的参数(在单个YAML文件中定义),并通过添加所有必要的样板配置来生成完整的Kubernetes服务配置。过去,Airbnb使用文件继承机制来进行配置(就像Chef cookbooks),这导致了级联基础设施故障影响。因此,目标之一是,通过使用YAML模板进行服务配置来减少潜在错误的影响范围。

kube-gen的另一个主要目标是,抽象出Kubernetes配置和工具复杂性,以便使工程团队能够保留其服务部署的所有权,并具备必要的隔离级别(部分基于标准化环境名字,由自动生成的命名空间保证),但是没有过长的学习曲线。尽管kube-gen因为解决的是Airbnb的具体情况而还未公开,但Cebula 指出有一些开源替代品,如helm(包管理),kustomize(通过文件继承配置)和Kapitan(通过模板配置)。

图:在自定义YAML中,服务配置文件被转换成Kubernetes所需的配置文件(每个环境在自定义YAML中定义一个配置文件集),然后应用于Kubernetes集群(来源:Airbnb的Melanie Cebula)

促进同质并易于发展的服务配置的进一步策略包括:在一个命令中创建一个新的服务框架存储库,在构建和部署配置文件时验证(不仅包括语法,还有所提供的值中的已知问题,如:无效的项目名字或所有者),并且对(生成的)服务配置进行版本控制。

一个新创建的服务git存储库包括应用程序和基础设施样板文件(包括CI/CD),自动填充合理的默认值和良好实践(如默认的自动扩展或文档生成)。版本控制服务配置(在YAML文件中有个特定字段)允许标记有问题的版本(因而它们不会被重新部署),这些可以是kube-gen自身的问题或特定于服务的问题,也可以是在不同的渠道上分发的不同的版本(例如,稳定版或测试版)。

图:Airbnb服务配置YAML文件示例,包括一个版本字段(来源:Airbnb的Melanie Cebula)

k是Airbnb的另一个内部工具。k主要是kubectl的自用包装器,它还过滤掉了kubectl的一些冗长输出。k还支持一些额外功能,像包装之前提到的kube-gen工具,构建/推送Docker镜像。

该工具的目标是自动化通用工作流,从而通过抽象一些Kubernetes工具的复杂性来简化和标准化工程工作。但是,它还让开发人员和基础设施工程师们使用一种共同的语言,并使用相同工具增强协作,Cebula如此说道。

一个典型的工作流程从k generate 生成Kubernetes文件开始,然后,k build来构建Docker镜像并推送到私有仓库,最后,k deploy来创建Kubernetes命名空间并应用Kubernetes文件,等待最终部署状态。无论哪种环境(即本地计算机、CI、阶段或生产),服务的构建和部署都是采用同样的方式。它还可以运行k diagnose,其依赖于一些Airbnb创建的插件:kubectl diagnose和kubectl pod events。目的是,在调试部署问题时,自动执行常见的手动操作步骤:收集未满容器上的信息,查找相关的pod events并针对这些容器获取日志。

最后,Cebula提到了Airbnb的Kubernetes采用过程中一些仍然存在的挑战,特别是与数千现有服务的迁移相关的,这些服务要求更好的多集群支持和扩展(一些服务要用多达数百个副本),处理更多具有高内存需求的有状态服务,以及用自定义控制器将所有配置移至GitOps工作流模型。

阅读英文原文:
https://www.infoq.com/news/2019/03/airbnb-kubernetes-workflow

Airbnb如何简化1000多位工程师的Kubernetes工作流程?相关推荐

  1. 前端开发工程师的基本工作流程

    目录 1大致基本流程 1.1产品PRD评审 1.2任务排期 1.2.3需求项目建立与任务拆分 1.2.4业务开发(并行) 1.2.5测试用例评审(并行) 1.2.6联调&自测 1.2.7提测 ...

  2. 测试工程师工作流程概论

    作者:未知    文章来源:网络 测试工程师的工作流程,与公司的整体工作流程,项目的测试要求等因素相关.本文主要讨论测试工程师的一般工作流程. 做好测试准备 1)明确测试任务的范围 测试文档通常包括测 ...

  3. 五千图文,详解SI信号完整性工程师工作流程

    打油诗 文章好不好,押韵不能少. 图文有点长,点赞加收藏. 以后想要看,收藏夹里翻. 免得找不到,急得发牢骚. 写在前面 初衷,无意中看到网友朋友圈上传了一张使用十年的笔记本电脑.想起十年前刚入职Sa ...

  4. 一位算法工程师对自己工作的总结,非常具有借鉴意义!

    算法.技术及其它 在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里.(注:标题里的算法,指机器学习算法,或者说"算法工程师"这个职位名称里的& ...

  5. 某位算法工程师对自己工作的反思

    算法.技术及其它 在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里.(注:标题里的算法,指机器学习算法,或者说"算法工程师"这个职位名称里的& ...

  6. 一位算法工程师对自己工作的反思,写的不错。

    算法.技术及其它 在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里.(注:标题里的算法,指机器学习算法,或者说"算法工程师"这个职位名称里的& ...

  7. 一位算法工程师对自己工作的反思,写得挺实在的

    算法.技术及其它 在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里.(注:标题里的算法,指机器学习算法,或者说"算法工程师"这个职位名称里的& ...

  8. 美团技术专家刘丁:工程师如何在工作中提升自己?

    点击"技术领导力"关注∆  每天早上8:30推送 引言 古人云:"活到老,学到老."互联网算是最辛苦的行业之一,"加班"对工程师来说已是&q ...

  9. IT 工程师如何在工作中提升自己?

    引言 古人云:"活到老,学到老."互联网算是最辛苦的行业之一,"加班"对工程师来说已是"家常便饭",同时互联网技术又日新月异,很多工程师都疲 ...

最新文章

  1. 利用PHP实现定时任务,利用php 实现定时任务简单实现 代码
  2. CV00-03-CV基本操作2
  3. nodejs繁琐地自建路由
  4. java面向对象认定的特征_Java面向对象的三大特征(一)
  5. 发现asp.net 2.0 在MSDN中的多个BUG 关于无刷新窗体的
  6. Airbnb 弃用之后,我们还应该用 React Native 吗?
  7. 读完《Effective Java》后我淦了 50 条开发技巧
  8. 【数字信号调制】基于matlab GUI数字信号调制系统【含Matlab源码 258期】
  9. 我用Anylogic写了一个遗传算法
  10. PET,CT图像融合笔记
  11. Android_GitHub_xUtils之DbUtils、ViewUtils、HttpUtils、BitmapUtils
  12. CSR蓝牙4.0与 APT-X高保真音频技术
  13. ios 高德获取定位_概述-iOS 定位SDK | 高德地图API
  14. 计算机树的逻辑结构,树结构(示例代码)
  15. raid, scsi_host pics
  16. Luogu P5416 [CTSC2016]时空旅行
  17. Nginx实现多虚拟主机配置
  18. 动态渲染element组件el-table表头项+自定义el-table列表项
  19. opencv-python 详解阈值分割
  20. ARMv8.1-M的一些特性

热门文章

  1. ArcGIS中,一个点集里的点两两连线,比如有4个点,就连6条线
  2. 判断new出来的对象里面值为null
  3. 习题1.29 (积分方法的优化---simpson规则)
  4. 【剑指Offer学习】【面试题66:矩阵中的路径】
  5. 如何设置IntelliJ IDEA智能感知支持Jsp内置对象
  6. xib加载的两种方式
  7. linux下Makefile学习--注释很好
  8. 大数据之-Hadoop3.x_MapReduce_MapTask工作机制---大数据之hadoop3.x工作笔记0124
  9. 持续集成部署Jenkins工作笔记0007---配置JDK和Maven并安装Deploy插件
  10. Netty工作笔记0068---Protobuf机制简述