企业在业务安全与数据合规过程中有哪些实践与挑战?戳此了解 了解详情
写点什么

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

  • 2019 年 3 月 19 日
  • 本文字数:1629 字

    阅读完需:约 5 分钟

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

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


2019 年 3 月 19 日 10:074205
用户头像

发布了 199 篇内容, 共 71.8 次阅读, 收获喜欢 283 次。

关注

评论

发布
暂无评论
发现更多内容

数字人民币是央行数字货币还是法定数字货币?

CECBC

校外培训行业迎来强监管,“教育+区块链”新模式试图解决行业痼疾

CECBC

【TcaplusDB知识库】TcaplusDB架构简介

tcaplus

TcaplusDB

GitOps系列二|如何借助极狐GitLab 和Terraform以代码形式构建基础设施?

极狐GitLab

kubernete

作为一名程序员如何开展自己的副业呢?

Changing Lin

话题讨论 6月日更

Nebula 基于 ElasticSearch 的全文搜索引擎的文本搜索

Nebula Graph

elasticsearch 索引 图数据库

5分钟速读之Rust权威指南(二十四)Box

码生笔谈

rust

优雅编程 | 7 个你应该掌握的 JavaScript 编码技巧

devpoint

JavaScrip 6月日更

为了不写接口文档,我肝了个 IDEA 插件!

程序员小航

Java IDEA idea插件 YAPI 文档

能否借鉴鸿蒙思路实现物联网燃气泄露监控?

老猿Python

鸿蒙 物联网 北向接口 远程监控

[译] R8 优化: Staticization

Antway

6月日更

【TcaplusDB君】 行业新闻汇编(6月17日)

tcaplus

数据库 TcaplusDB

Cocos 大表姐:所有技术的本质都是数学问题丨ECUG Meetup 讲师专访

七牛云

音视频 游戏开发 Cocos Meetup

SpringCloud Gateway 路由转发性能优化

中原银行

微服务 性能优化 SpringCloud Gateway 中原银行

程序员上班“划水”向阿里猛投简历,两次被刷后,终成“菜鸟”P6

Java 程序员 架构 面试

建党100周年,快来预约博睿数据驻场服务!

博睿数据

停车场事故频频,AI 达人将摄像头变身安全卫士

阿里云视频云

阿里云 计算机视觉 音视频 应用 英特尔

只等你来!OpenAtom XuperChain开发者夏季论坛来啦

百度开发者中心

百度 开源 开发者

成为一个面霸需要面试多少回?

escray

极客时间 6月日更

TcaplusDB祝所有父亲节日快乐!

tcaplus

数据库 TcaplusDB

为什么智能作业灯突然成为教育行业的趋势?

anyRTC开发者

音视频 WebRTC 智能硬件

【 Meetup 推荐】6月26日,邀请您相聚西子湖畔,探讨 2021 音视频技术最佳实践

七牛云

音视频 直播 RTC Meetup

浪潮云入选中国网络安全百强综合实力领军者象限

浪潮云

云计算

爆场预警!百度大脑开放日-AI赋能软硬件产品创新

百度大脑

百度大脑开放日

SpringCloud Gateway 路由数量对性能的影响研究

中原银行

微服务 SpringCloud Gateway JMH性能基准测试 中原银行

【TcaplusDBx黎明觉醒】一路相伴,不负期待

tcaplus

数据库 TcaplusDB

2021年,Java开发者值得学习的13项技能

百度开发者中心

Java

Flink EventTime 和 Watermark

Alex🐒

flink 翻译 flink1.13

超详细!百度富媒体检索比对系统的关键技术

百度开发者中心

百度

阿里JAVA架构师面试136题含答案:JVM+spring+分布式+并发编程!

Java 程序员 架构 面试

WAVE SUMMIT 2022 深度学习开发者峰会

WAVE SUMMIT 2022 深度学习开发者峰会

Airbnb如何简化1000多位工程师的Kubernetes工作流程?_运维_Manuel Pais_InfoQ精选文章