写点什么

Pinterest 的 Kubernetes 平台化之旅

  • 2019-10-05
  • 本文字数:1380 字

    阅读完需:约 5 分钟

Pinterest的Kubernetes平台化之旅

Pinterest 软件工程师透露他们在公司采用 Kubernetes 时引入了定制的工具和资源。对于其他希望构建自己的平台即服务(PaaS)和相关开发人员工作流的团队来说,其关键收获包括容器编排系统如何才能提供一种方法来统一管理工作负载,Kubernetes 的工作负载模型可以通过自定义资源定义来增强,并且一个健壮的端到端的测试管道是避免回归的关键。


Pinterest 是一款社交媒体网页和移动应用程序,它允许用户保存或“pin”信息,并且拥有庞大的用户基础,在 40 亿块主板上总共保存了超过 2000 亿个 pin。由于该体量以及与之相关的基础设施堆栈的增长,Pinterest 团队遇到了几个挑战。他们表示,他们的工程师在启动工作负载时没有统一的经验,管理大量的虚拟机给基础设施团队带来了巨大的维护负担。此外,很难跨不同的系统构建基础设施治理工具,也很难确定哪些资源可以被回收利用。这与Airbnb在简化Kubernetes工作流程方面的经验相呼应。该团队试图通过三个关键的主题来解决这些问题:服务可靠性、基础设施效率和开发人员生产力。


据主要作者 Lida Li 和她团队所说,云管理平台团队在 2017 年开始与 Kubernetes 合作,docker化他们的生产工作负载,并评估不同的容器编排系统。Kubernetes 的本机工作负载模型涵盖了部署、作业和守护进程集,但是团队需要更多的工作负载模型。他们表示,可用性问题是采用 Kubernetes 过程中的“巨大障碍”,在同一个 Kubernetes 集群上支持不同版本的运行时支持是很困难的。他们的解决方案是设计自定义资源定义custom resource definitions,CRDs)。这是一个预发布的部署工作流,可用于基于 Kubernetes 的新计算平台的早期采用者。该团队正在将此工作流集成到他们的 CI/CD 平台中,以便为他们的工程师创建一个更干净的服务。



关于如何部署 Pinterest CRDs 的概述(图片来自Pinterest工程博客


Pinterest 设计 CRDs 是为了达到各种各样的目的,考虑到 Kubernetes 的采用,这对工程师来说可能也是一种信息。首先,他们希望将各种本地的 Kubernetes 资源打包成一个单一的工作负载,这样就避免了他们的工程师一个接一个地重复做这项工作。其次,他们希望通过在规范中添加必要的 sidecars、init 容器、设备变量和容量,来为应用程序注入必要的运行时支持。最后,这些定义用于对本地资源执行生命周期管理,例如协调规范和更新事件记录。Pinterest 团队推测,这种演变大大减少了工程师的工作量,从而降低了出错的风险。这与 Shopify 团队去年在纽约QCon大会上分享的经验如出一辙。


处理此类问题的工程师需要考虑的一个问题是,为了避免应用程序之间的不一致,以及过于庞大的维护和支持负担,Pinterest 发现他们的基础设施团队需要部署所有的工作流类型,如 pod 级别的 sidecars、node 级别的守护进程集或 VM(虚拟机)级别的守护程序。Tinder 平台自 2019 年 3 月以来一直只在 Kubernetes 上运行,该公司采取了相反的做法,其基础设施的责任由该公司所有的工程师共同承担。


需要考虑的另一个问题是,Pinterest 团队在本地 Kubernetes 测试基础设施之上构建了一个端到端的测试管道,测试部署到所有集群上。这减轻了与在 Kubernetes 原生工作流模型之上工作的相关风险,工程师们表示,在上生产之前,它捕获到了许多回归。Pinterest 团队也将他们的部署工作流整合到他们的新 CI|CD 平台中。


原文链接:


Pinterest’s Journey to a Kubernetes Platform


2019-10-05 08:001881
用户头像

发布了 219 篇内容, 共 108.3 次阅读, 收获喜欢 525 次。

关注

评论

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

再一次重构云计算底座, Amazon Graviton3!

亚马逊云科技 (Amazon Web Services)

计算

手机APP消息推送极光推送jpush-php实例

Owen Zhang

极光推送 jpush-php实例

“爆到天际线” - TiDB 2021 Hackathon 决赛不负责任点评

PingCAP

基于云上 Arm 架构赋能数值天气预报

亚马逊云科技 (Amazon Web Services)

计算

小白都能吃透Java IOl流,最骚最全笔记,没有之一!1️⃣

XiaoLin_Java

Java io 基础 1月月更

Hibernate 的 HHH90000022 警告

HoneyMoose

深入 MySQL 索引:从数据结构到具体使用

Ayue、

MySQL 数据库 1月月更

类脑计算技术领域领导者灵汐科技加入龙蜥社区,共同繁荣开源生态

OpenAnolis小助手

Linux 开源 芯片 生态

java开发面试之Redis高并发处理

@零度

redis JAVA开发

仅有0.1M可训参数,AIOps日志异常检测新范式

云智慧AIOps社区

AI 算法 异常检测 智能运维 日志解析

【架构实战营】模块九作业

Geek_99eefd

架构实战营 「架构实战营」

雷霆传奇H5光柱版游戏详细图文架设教程

echeverra

游戏

Spring Boot Admin,贼好使!

王磊

springboot

在 Flutter 中使用交错网格视图创建瀑布流布局

坚果

flutter 1月月更

终于“打造”出了一个可以随时随地编程的工具

老表

Python Linux 服务器 跟老表学云服务器

深入理解MySQL的binlog

JavaEdge

1月月更

被赶出自己公司的40岁程序员,为Coder们写了个网站--程序员福利网

程序员福利网老骨

程序员 导航网站

Go 语言快速入门指南:Go 语言解析JSON

宇宙之一粟

Go json 1月月更

1月月更|推荐学java——MyBatis高级

逆锋起笔

mybatis SSM框架 java 编程 动态SQL

从技术新趋势到云原生应用开发,云计算下一个十年将走向何方

亚马逊云科技 (Amazon Web Services)

计算

Pinterest的Kubernetes平台化之旅_容器_Rupert Field_InfoQ精选文章