Data+AI时代,如何打造下一代数智平台? 了解详情
写点什么

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

  • 2019-03-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-03-19 10:074635
用户头像

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

关注

评论

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

AI加持|博睿数据公众号正式升级运维智能体!

博睿数据

AWS X 易点天下解码Agentic AI驱动下的营销新变革

新消费日报

等保测评费用谁出?收费依据是什么?

行云管家

等保 堡垒机 等保测评

2025年面试通过率低?来看看一位Android大牛的BAT面试心得与经验总结

程序员每日分享

程序员 面试 移动开发 Android开发 互联网大厂

PAI推理重磅发布模型权重服务,大幅降低冷启动与扩容时长

阿里云大数据AI技术

开源 扩容 冷启动 模型训练/测试 大型语言模型LLM

面临秋招!卷S人的Java中高级核心知识全面解析面试手册,涨薪跳槽拿高薪靠它了!

程序员高级码农

Java 程序员‘

YMatrix 技术内幕:详解 10w+ TPS 背后的技术矩阵

YMatrix 超融合数据库

OLTP HTAP OLTP 场景实践 YMatrix HTAP数据库

从电脑到座舱:英特尔携AI科技杀入智能汽车主战场

科技热闻

爱测智能体测试平台·全新升级邀您体验

测试人

人工智能 软件测试

医学+AI系列第一场|聚焦北京中医药大学的产-教-研融合、以赛促学、创新驱动的人才培养实践

ModelWhale

以赛促学 北京中医药大学

flstudio找不到中文设置,没有语言选项怎么办?FL Studio设置中文教程,FL Studio中文版免费下载

阿拉灯神丁

编曲软件 FL Studio 水果FL Studio FL水果 音乐创作

开源鸿蒙亮相HDC 2025 共建千行万业的数字底座

最新动态

如何打开三维模型并测量?用什么软件好?

在路上

cad cad看图 CAD看图王

更强模型效果!豆包大模型 1.6 系列上线边缘大模型网关,最高申领1000万免费 Tokens

火山引擎边缘云

AI+ 端侧AI 大模型 侧端大模型

基于Casbin的ABAC授权模型设计与开发踩坑实录

天翼云开发者社区

安全 权限管理 访问控制

新能源车企需要用到堡垒机情形简单分析

行云管家

网络安全 数据安全 堡垒机

微信读书十周年,后台架构的技术演进和实践总结

JackJiang

网络编程 即时通讯 IM

用DeepSeek+ Python 自动生成测试用例 狂省5小时,漏测率暴降83%!

测试人

人工智能

图纸太杂乱?1秒关闭CAD图层,清爽看图!

在路上

cad cad看图 cad图纸

2025年含泪狂刷Android基础面试118题,offer拿到手软

程序员每日分享

程序员 面试 移动开发 Android开发 互联网大厂

通义灵码协同育人项目申报正式开启!

阿里云云效

阿里云 通义灵码

国内独家AI+操作系统TencentOS Server亮相2025中国国际金融展

极客天地

能源行业数智化运维实战指南 | 博睿数据能源行业精选案例集重磅发布!

博睿数据

JVM内存结构33连问

量贩潮汐·WholesaleTide

JVM

AI技术在英语背单词方面的应用

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI技术应用

原点安全入选Gartner®“数据安全平台”中国市场指南代表厂商

原点安全

DeepSeek-R1源码解读

AI布道Mr.Jin

向量删除的3种方式

DashVector

人工智能 数据库 大模型

通义灵码协同育人项目申报正式开启!

阿里巴巴云原生

阿里云 云原生 通义灵码

【JeecgBoot AIGC】AI工作流配置与流程节点全解析

JEECG低代码

AI应用 AIGC JeecgBoot AI 大模型 AI流程

Java线程池详解:高效并发编程的核心利器

不在线第一只蜗牛

Java

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