关于后端:全面解锁Kubernetes百度爱番番技术实践全揭秘

41次阅读

共计 4995 个字符,预计需要花费 13 分钟才能阅读完成。

导读:Linux 基金会执行董事 Jim Zemlin 曾说道:“我见证了开源圈子的两大事件:一个是 Linux 的胜利,一个就是 Kubernetes 和云原生的大暴发。开源是历史上最胜利的寰球翻新推动形式之一,Linux 曾经成长为世界上最重要的软件平台,而云原生则在新时代以长驱直入之态暴发。”

2019 年,随着云原生架构的相干探讨逐渐热烈,云 +AI 已成为时代支流。在衰亡的这股云原生潮流中,中国奉献微小:中国的 Kubernetes 贡献者在全球排名第二,有超过 10% 的 CNCF 会员来自中国、26% 的 Kubernetes 认证服务供应商来自中国;云原生理念曾经被国内的开发者宽泛承受,进入到企业践行的阶段。

百度智能云云原生团队 2015 年 开始了 Kubernetes 方向的投入,对于 Kubernetes 社区的开源奉献,百度在 2019 年 进入寰球前 10。然而纵观百度外部,支流服务是基于 matrix 的容器化部署,Kubernetes + Docker 尚未失去成熟利用。在企业服务畛域,基于 Kubernetes + Docker 的开源生态曾经成为支流技术架构。爱番番携手基础架构部云原生团队,深度单干了公司外部服务基于 Kubernetes + Docker 部署的推动,将全副爱番番线上流量切换到 Kubernetes,通过 2 周多的察看,运行稳固。

全文 4834 字,预计浏览工夫 14 分钟

如果浏览此文的你是一名研发侧的同学,正好也在打算将产品的技术栈往云原生方向去降级,那么你可能会关怀爱番番为什么会抉择 Kubernetes?谁来帮我搞定 Kubernates 集群?迁徙的工作量大么?有什么收益?那么接下来,咱们将现身说法,针对大家可能关怀的问题做个概述。

一、爱番番为什么要抉择 Kubernetes

在 ToB 这个方向上,咱们始终强调“以客户为核心”、“技术为产品服务、产品为客户服务”,而 Kubernetes 则是技术达成为产品服务的基石。

随着爱番番业务的深入和推动的减速,原有技术框架裸露的一些问题越来越显著,咱们从三个方面来论述:

疾速交付:

  • 如何编排 200+ 模块的上线依赖并在 1 个小时 内实现上线?
  • 如何实现两周一迭代,一周两公布指标?

维稳降本:

  • 如何实现长期保持稳定性 4 个 9 以上的指标?
  • 如何缩小上线期间的 pvlost?
  • 如何实现 2000+ 服务实例的全面可察看性与治理?
  • 自研的局部微服务基础设施性能 / 稳定性 / 吞吐量存在有余,是该继续投入更多人力去革新还是想方法引入开源计划?

开箱即用:

  • 如何实现爱番番 (toB 产品) 多样化售卖需要?
  • 如何规模化,可复制的部署与运维,升高环境差别与心智老本?

咱们的答案是采纳 云原生架构,建设云上爱番番,缩小反复造轮子,减速客户价值点交付。

Kubernetes + Docker 的技术在业界曾经十分成熟,CNCF 有十分全面的云原生技术来撑持咱们对于容器化、CICD、利用编排、监控剖析等方面的诉求,基于已有的开源组件和联合公司内的基础设施,咱们能以较少的研发老本疾速晋升根底技术的能力,以达到撑持产品疾速迭代的指标。

二、爱番番和基础架构部合作形式

单干的模式为基础架构部(INF)的云原生团队提供 Kubernetes 的技术研发和反对,爱番番进行服务的降级革新和部署。咱们的单干大抵分为 2 个阶段:

  • 第一阶段:Kubernates 的技术研发和集群部署,基础架构云原生团队实现 Kubernetes 适应内网环境的技术研发和集群部署。
  • 第二阶段:爱番番服务部署和流量迁徙,爱番番实现 100+ 个模块 Kubernetes 环境部署;按客户维度进行小流量,逐渐实现 100% 正式客户流量迁徙。

三、爱番番迁徙 Kubernetes 计划

迁徙 kubernetes 面临的关键问题及解决方案。

3.1 多种类型和泛滥服务如何高效的部署

难点:差异化的基础设施对继续交付能力的挑战

  • 基础设施:基础设施如何运维,保障高可用?镜像仓库如何治理?
  • 部署状态:如何零侵入业务的容器化?容器如何治理反对不同类型利用?
  • 利用治理:k8s 平台上如何保护 10+ 资源?利用如何疾速部署回滚?
  • CICD 流:CICD 流如何对接新的基础设施?CICD 流如何进一步晋升研发效力?

计划:标准化,自动化,云原生的 CICD 流程

名词解释:

agile : 撑持百度麻利开发的企业级继续集成平台

archer3 : 对立的部署协定标准

适应内网环境的 Kubernetes + Docker 技术调研与方案设计,实现原平台 /Kubernetes 两套同时部署,保障服务一致性,晋升研发效率。

为达到疾速交付的指标,首先要实现研发全生命周期的标准化,须要制订对立的规范与标准,反对多种类型利用。为了实现标准化,爱番番联合公司继续集成平台,并扩大实现三个外围环节,实现全自动化的 CICD 流程。

  • 对立打包:基于对立的脚手架创立规范的利用包,通过对立打包服务实现利用包标准化为公司的 archer3 部署协定,能够无缝部署于其余平台。
  • 对立容器化:将利用容器化的规定上移,防止容器化的规定散落在各个利用中,便于管理与保护。docker image build 的规定文件与业务源码齐全解耦,定义到 CI 的流程环节中,依据利用的元数据信息,抉择不同的 Dockerfile 模板文件构建镜像,docker image tag 的版本号依据 pipeline 的不同,辨认 git commit log 并取前 6 位做镜像与源码的可追溯。
  • 对立利用包:基于标准化的 helm chart 集成容器化镜像和治理对立利用 k8s 资源,在 CICD 侧筹备对立且带版本号的 helm chart template,在利用集成时,通过上一环节容器化的名称与 image tag 进行有关联,实现了 deployment.yaml 的初步化,另一方面,借助于 helm chart 动静渲染模板和弱小的配置能力,实现利用以不同的状态部署到不同的集群中。

除了关注标准化与自动化带化效率的晋升,同时提供对立利用包治理,涵盖镜像、k8s 资源、以及环境等相干周边资源,进一步晋升继续集成能力。

收益:业务零侵入,均匀 10.6min 编译部署

实现 150+ 的利用基于流水线零老本的降级革新,实现容器化与对立利用包的部署,在利用覆盖面上,反对利用类型全笼罩,同时反对一键秒级回滚的策略,能够零老本疾速扩大集群与环境。

3.2 平滑稳固的 k8s 迁徙计划

难点:业务在高速增长,如何低成本且灰度迁徙生产流量至 k8s 平台?

计划:对立流量入口、灰度引流、逐渐转全和监控回切兜底

名词解释:

  • BFE : 百度对立应用层流量接入转发平台
  • BNS : 百度名字服务,用于满足服务间交互中常见的的资源定位、ip 白名单保护等需要,也能够用于机器列表查问,应用场景包含机器列表查问、服务定位、白名单保护、数据库智能受权等
  • access gateway : 基于 OpenResty 构建的 k8s 集群的 API Gateway
  • BOS : 百度对象存储 BOS (Baidu Object Storage) 提供稳固、平安、高效以及高扩大存储服务

构建 k8s 对立流量入口为 access gateway,作为内部流量入 k8s 集群入口,集群内通过 k8s service 做服务发现,有打算按节奏逐渐扩充灰度比例,直至转全。

通过公司对立的 BFE,实现客户粒度小流量和多版本的管制与路由,分钟级流量回滚计划以及正式流量逐渐迁徙的计划。

流量迁徙到 k8s 关键步骤阐明

  1. k8s 部署预公布环境,验证通过
  2. 利用部署 k8s 和原平台同构的线上环境
  3. 配置 k8s Access gateway,将全副流量转发至原平台,Access gateway 验证通过
  4. 如果验证失败,在 k8s 环境中调试零碎,直到验证通过,此过程不影响原平台流量
  5. 调整 Access gateway 的 sample 配置,将内部测试的客户 ID 流量下发至 k8s 集群,验证通过
  6. 如果验证失败,反复步骤 5,直到验证通过
  7. 将 Access gateway 的 BNS 集群增加到网关 BFE
  8. 减少转发规定,手动种 cookie,对于命中指定 cookie 规定的流量转发到 Access gateway,验证通过
  9. 将网关的 BFE 切换到 k8s 的 Access gateway,验证通过
  10. 如果验证失败,将 BFE 切回原平台的 API gateway 进行止损,剖析起因,反复步骤 7,直到验证通过
  11. 察看零碎稳定性,直到验证稳固,须要确定同一用户流量,稳固落在同一集群
  12. 调整 sample 配置,进行租户粒度的小流量
  13. 逐步扩充小流量比重,直至转全

收益:线上周稳定性放弃 99.99% 以上

四个月工夫内实现 150+ 利用,2K+ 服务接口革新以及线上服务全量转全。

部署架构进一步优化,对立收敛多个域名以及起源的流量,对立治理。

四、迁徙 Kubernetes 的收益

通过容器技术解决资源标准化,为前面服务化、自动化奠定了根底,同时业界对立的 kubernetes 平台,减速根底设计降级,具体收益次要包含:

  • 迭代速度晋升:实现两周一迭代,一周两公布指标。实现爱番番 100+ 利用及其依赖的技术组件在 Kubernetes + Docker 环境的运行革新,实现了从开发、测试、部署、运行、察看的全流程买通。
  • 疾速构建监控体系:突破之前基于 5-6 个公司外部自研产品对服务进行监控的现状,通过引入 Prometheus + grafana,疾速建设对立的产品衰弱度监控 / 察看平台。
  • 低成本降级基础设施:云原生的微服务基础设施降级与落地,包含基于 config map 的配置核心解决方案、基于 EFK/Skywalking 的日志采集解决方案、基于 ElasticAlert 的日志预警计划,基于 Kubernetes 的对立流量入口,进步了零碎稳定性和排查问题的效率。

五、爱番番在云原生方向的布局

  • 扩大服务类型:推动更多类型的服务迁徙至 Kubernetes,实现基于 Golang 的在线沟通、基于脚本语言的定时工作迁徙至 Kubernetes。
  • 开释红利:基于云原生架构的高可用,引入 Kubernetes 原生的服务注册、发现机制、主动扩缩容和自愈等能力。
  • 高可用服务:多地区多集群部署,为不同地区的客户提供更好的客户体验,同时可进一步实现服务的单元化部署,进步零碎的容灾能力。
  • 高效服务治理:基于 Service Mesh 的微服务架构,可实现零碎全链路的可察看,在服务的调用、重试、熔断、限流、降级等方面提供更强的控制能力。反对服务多版本,通过部署隔离、租户隔离,实现多版本公布、灰度公布。
  • 自动化继续集成:基于 Kubernetes 的 CICD 工具链平台,实现多环境隔离、疾速部署、一键公布、可视化运维治理等。

六、基础架构部在云原生方向的布局

打造具备竞争力的云原生利用平台产品矩阵,反对更多产品接入。

他山之石,可以攻玉。爱番番始终秉持“技术为产品服务”的理念,拥抱开源,踊跃引入业界成熟、先进的技术解决方案,撑持产品的倒退。在云原生方向,爱番番走出了第一步,将来,咱们还将持续致力,充分利用 CNCF 开源社区的力量,继续晋升产品的研发效率及零碎稳定性,同时也心愿看到更多的产品从云原生技术中受害。

七、结语:拥抱云原生,减速价值发明

云原生是面向云利用设计的理念,帮忙企业构建弹性牢靠、松耦合、易治理可观测的利用零碎,晋升交付效率,升高运维复杂度,次要体现为三个方面:

  • k8s 平台红利的开释,充分发挥平台劣势,将服务自治、故障自愈、疾速弹性,主动扩缩容等能力落实到理论生产实践,升高运维复杂度。
  • 引入与整合 service mesh 能力,打造服务治理平台,提供丰盛弱小的流量管控和服务路由的能力。
  • 交融各项监控指标,建设对立的监控体系,将 metric , tracing 和 log 整合为一体,提供一站式的解决方案与服务能力。

围绕云原生体系,爱番番将持续在云原生方向上倒退,根底技术一直变革演进新的技术体系,逐渐打磨适宜团队的根底技术产品与服务,继续引入云原生技术以反对产品的倒退,秉持“技术为产品服务”的理念减速客户价值点的交付。

作者介绍:

chhoho , 百度爱番番根底技术负责人,领有多年 CRM 行业架构教训,善于分布式系统、微服务架构、CICD、Cloud Native 等技术畛域。

举荐浏览

|百度文库新一代文档阅读器!核心技术点全解析!

|详解预训练模型在信息检索第一阶段的利用

|疾速剪辑 - 助力度咔智能剪辑提效实际

———- END ———-

百度 Geek 说

百度官网技术公众号上线啦!

技术干货 · 行业资讯 · 线上沙龙 · 行业大会

招聘信息 · 内推信息 · 技术书籍 · 百度周边

欢送各位同学关注

正文完
 0