NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何在 Kubernetes 中对无状态应用进行分批发布

  • 2019-03-25
  • 本文字数:1957 字

    阅读完需:约 6 分钟

如何在 Kubernetes 中对无状态应用进行分批发布

在 Kubernetes 中针对各种工作负载,提供了多种控制器,其中 Deployment 为官方推荐,被用于管理无状态应用的 API 对象。本文将结合 Deployment 的特性,与常见的发布策略,以及我们在分批发布场景下的实践,做一些分享。

使用 Deployment 的场景

Deployment 在 Kubernetes 1.9 版本后被晋升为 GA 版本,基于 Spec 定义管理 Pod,无需关心每个实例的部署结构差异。


对于日常应用变更,可以满足如下典型场景:


• 应用变更,提供滚动升级策略,失败自动暂停。


• 应用变更失败,回滚到之前版本。


• 应用水平伸缩,支撑更高负载。


• 历史资源回收,不需要手工回收 Pod 或 ReplicaSet 资源。


Deployment 提供了 RollingUpdate 滚动升级策略,升级过程中根据 Pod 状态,采用自动状态机的方式,通过下面两个配置,对新老 Pod 交替升级,控制升级速率。


• Max Unavailable : 最大不可用实例数/比例。


• Max Surge : 调度过程中,可超过最大期望实例数的数/比例。

Kubernetes 生态中常见变更策略

基于 Deployment 的基础功能,结合 Service / Ingress / Istio 等流量控制组件,常见如下几种策略。具体对比分析与实现,可参考网上文章 ,这里不做过多展开:


  1. 滚动 Rolling:渐进式创建新版本,然后停止老版本,自动完成整个流程。



  1. 金丝雀 Canary:小部分流量,升级并导入新版本,手工验证完毕后,全量升级部署。



  1. 蓝绿 Blue/Green:创建出新版本,与老版本并存,通过切换流量实现发布与回滚。



  1. 重建 Recreate:杀死所有老版本,再用新版本重建。适用于开发、测试环境重新初始化。

  2. A/B 测试:部署新版本,流量控制倒流,长期在线。严格来说,这是一种线上业务与商业化验证的模式,不是变更策略。


为何需要分批暂停

在日常变更中,上述机制会让变更变得简单和便捷,但 Deployment 有如下限制:


• 需要手工回滚。


• 无法暂停滚动升级过程。


那么客户发布过程中,经常会遇到哪些情况,导致发布失败呢?我们 在整理与分析客户失败的发布时发现,主要出现在下面阶段:


• 开始灰度发布:因配置错误、打包异常、代码 BUG,或灰度后功能验证中发现了问题。


• 灰度验证成功,分批发布过程中:因网络白名单、资源不足、单机配置错误。


• 发布上线后:客户反馈、监控报警。


不难看出,一次常见的发布,在不同发布阶段,需要一个手动的、可以更细粒度的控制,减少对线上的不良影响。所以滚动升级的分批暂停功能,对核心业务发布来说,是质量保障必不可少的一环。那有没有什么方法,即可使用 Deployment 的滚动升级机制,又可以在发布过程中,结合金丝雀发布,分阶段暂停发布流程呢?

阿里在 K8s 中的分批发布实践:手动灰度+自动/手动分批发布

在阿里巴巴内部,分批发布是最常见的发布手段,用于保障线上发布。结合“可灰度、可监控、可回滚”作为基本发布要求,发布阶段可以分为主要两个阶段:


• 灰度阶段:先灰度 1-2 台,线上验证流量正确性。该阶段出现问题后,影响面可控、可快速回滚。大部分应用变更过程中,可能会出现的问题,均会在此阶段被发现或暴露。


• 自动/手动分批阶段:灰度成功后,一批批发布,为监控和报警,留足时间窗口,提前发现问题。


结合上述场景,我们采用管控 + 双 Deployment 方式实践了可暂停的分批发布。主要是基于如下两种发布策略的组合使用:


• Canary + Batch Rolling 策略结合。


• Canary : 灰度发布 XX 台,发布后暂停。线上验证流量。


• Batch Rolling : 分批发布 XX 批,发布后自动/手动继续发布下一批。


针对具体发布策略,我们的考虑和做法是这样的:


• 创建新 Deployment : 新版本发布,作为灰度验证的部署实例,初始实例数为 0;


• 进入灰度阶段:仅选取少量实例,扩容新版本 Deployment,缩容线上 Deployment;


• 进入分批阶段:根据分批实例,自动变更新老 Deployment 实例;


• 回滚阶段:反向做分批流程,将新版本实例数缩容到 0,老版本重新扩容到原有预期的实例数。



若发布过程中出现异常状态,如何及时发现错误,设置滚动升级卡点,或做到自动回滚呢?现在考虑如下:


• 自动健康检查:结合应用 Liveness / Readiness 检查配置,根据 Kubernetes Pod 状态,若发布过程中有任何发布失败情况,均停止当前批次新老 Deployment 的滚动升级操作。


• 终止发布回滚:认为任何的发布失败,不应该是等待排查问题再发一次,而是应该第一时间回滚代码,保障线上业务质量,然后再考虑第二次变更。所以当未完成本次分批发布时,终止变更,会自动回滚本次变更。

思考

通过扩展滚动更新,提供手工分批能力后,还有更多可以保障发布的策略与发布。


• 对灰度发布,结合流量控制规则,进行线上灰度验证。


• 结合更多监控指标,与线上服务情况,确定指标基线,作为发布卡点,让分批发布更自动化。




作者简介


孙齐(花名:代序),阿里巴巴高级工程师,负责企业级分布式应用服务 EDAS 及 EDAS Serveless 的开发和维护工作。


2019-03-25 15:084072

评论

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

是不是你在找的推特GIF动图下载方法?!支持苹果安卓双系统使用!

frank

twitter 推特视频下载

南京公安研究院与秒云达成生态合作,携手赋能产业智能化发展

MIAOYUN

智慧公安 生态合作

线上GC故障:CMSGC太频繁,你知道这是什么鬼?

Java永远的神

程序员 性能优化 JVM java面试 GC

vivo 游戏中心低代码平台的提效秘诀

vivo互联网技术

低代码 组件化 配置化 提效

如何接受或拒绝 Excel 中的修订

在下毛毛雨

C# .net Excel 工作表 跟踪修订

DataEase单点登录之OIDC

搞大屏的小北

keycloak 单点登录 OIDC

转转实时OLAP分析场景技术选型与应用实践

转转技术团队

OLAP

MySQL 慢查询日志分析(Filebeat+Elasticsearch+DataEase)

搞大屏的小北

MySQL慢查询 MySQL日志分析 MySQL日志可视化

使用DataEase分析销售数据有多方便?

搞大屏的小北

数据可视化 销售数据分析 数据展示

微信开放小程序运行SDK,自己的app也能运行小程序

Onegun

微信小程序 小程序容器

MySQL进阶:Innodb的RR到底有没有解决幻读?

程序员小毕

MySQL 数据库 程序员 后端 java面试

同是弹性公网IP,华为云弹性公网IP的优势有哪些?

秃头也爱科技

京东金融APP-新交互技术“虚拟数字人”赋能世界杯主题营销

京东科技开发者

大数据 前端 Web 交互 虚拟人

关于佛萨奇系统开发及原力元宇宙2.0佛萨奇系统开发方案

I8O28578624

葡萄酒越贵越好?贾斯特里尼&布鲁克斯刷新你的认知

联营汇聚

自学数据分析——重新认识数据分析

搞大屏的小北

数据分析 数据分析可视化

弹性公网IP支持多产品灵活绑定或解绑,能为企业提供独立公网IP资源!

秃头也爱科技

有序存储对于高性能的意义

陈橘又青

算法

想做运维审计大屏?用这个工具就对了!

搞大屏的小北

大屏可视化 运维审计 审计大屏

预测式外呼算法模型的深度应用详解

中关村科金

人工智能 大数据 AI 智能

国内外开源数据可视化工具对比:DataEase 与 MetaBase 对比

搞大屏的小北

DataEase Metabase 开源数据可视化

DataEase 做出来好看吗?

搞大屏的小北

数据可视化 大屏可视化 DataEase

让数据说话-中国农业经济发展情况

搞大屏的小北

数据可视化 经济可视化 经济发展

贾斯特里尼&布鲁克斯葡萄酒,历经百年的传世经典

联营汇聚

论文复现丨基于ModelArts实现Text2SQL

华为云开发者联盟

人工智能 华为云 12 月 PK 榜

自学数据分析——数据分析方法和模型

搞大屏的小北

数据分析方法 自学数据分析

HVML 解释器 PurC 0.9.2 发布;持续演进!

hvmlenvoy

编程语言 解释器 HVML

用品质提升品味,贾斯特里尼&布鲁克斯葡萄酒

联营汇聚

一招搞定小白最头疼的数据大屏配色问题!

搞大屏的小北

色彩匹配 大屏配色

【大屏设计】数据大屏间距那点事-距离产生美

搞大屏的小北

大屏布局 报表布局 看板布局排版

实践GoF的23种设计模式:命令模式

华为云开发者联盟

Go 开发 华为云 12 月 PK 榜

如何在 Kubernetes 中对无状态应用进行分批发布_文化 & 方法_孙齐_InfoQ精选文章