阿里云赵明山:详解灵活可插拔的渐进式发布框架OpenKruise Rollout

2023-11-03

嘉宾 | 赵明山

随着K8s及云原生理念的普及,尤其是在持续部署流水线出现后,渐进式交付为互联网应用提供了基础设施和实现方法。

2022年7月27日,在由开放原子开源基金会主办的“2022开放原子全球开源峰会”上,阿里云技术专家、OpenKruise Maintainer主要贡献者赵明山(立衡)带来了《OpenKruise Rollout:灵活可插拔的渐进式发布框架》的主题演讲。

什么是渐进式发布

渐进式发布(Progressive Rollout)主要区别于全量/一次性发布,主要包括以下特点:

  • 增量式的发布过程,把一次发布分为多个批次,并且可以严格控制每个批次的启动和停止;

  • 实例与流量的双重维度的灰度,如金丝雀发布、A/B Testing发布、蓝绿发布;

  • 阶段性的可验证性,发布的每个批次都可以验证发布的正确性及是否符合预期;

  • 可暂停、可回滚、可继续、可自动化状态流转;

  • 主要应用于提供Service服务的应用,而Job类型一般没有需求。

以一次版本发布为例:Version X ->Version Y

假如线上是X版本,现在需要发布到Y版本。首先会划分发布批次(如第一批只发布10个实例),然后,灰度一定规则的流量到Y版本。如淘宝在进行重大发布变革时,会采用A/B Testing的方式,只将公司员工灰度到新版本,通过日志、监控、测试等方式进行验证,验证通过之后,重复上述过程,完成后续批次的发布。如果在这个过程中发现了任何异常,可以快速回滚到X版本。

渐进式发布与全量发布相比,它最大的优势在于:增加了很多阶段性的验证步骤,极大地提升交付的稳定性及效率。尤其对于大规模场景来说,渐进式发布是必要条件。

Kubernetes工作负载

在Kubernetes中,所有的Pod都是由工作负载来管理的,其中最常见的两个负载是Deployment和StatefulSet。

Deployment对于升级而言提供了maxUnavailable和maxSurge两个参数,但本质上来讲,Deployment只支持流式的一次性发布,用户并不能控制分批。

StatefulSet虽然支持分批,但跟我们想要的渐进式发布的能力还有较大距离。

OpenKruise工作负载

OpenKruise是阿里云开源的云原生应用自动化管理套件,也是当前托管在CNCF下的Sandbox项目。在原有的工作负载、Sidecar管理等领域外,OpenKruise目前正在渐进式交付领域进行尝试。

工作负载feature对比

CloneSet是OpenKruise针对无状态应用扩展的工作负载,与K8s原生组件Deployment相比,它增加了很多额外的能力,如支持PVC、指定扩容顺序、支持分批发布等。

工作负载 VS. 渐进式发布

渐进式发布与基础工作负载,在发布能力上是一种包含关系。除了基础的Pod发布外,还有流量发布与进度控制。

Rollout方案的设计理念

Argo Rollouts的设计理念

Argo Rollouts是一个Kubernetes控制器和一组CRD,包含渐进式发布能力的工作负载(类Deployment),为Kubernetes提供高级部署功能,例如蓝绿部署、金丝雀部署、金丝雀分析、实验和渐进式交付功能。Argo Rllouts适用于定制化能力较强、没有存量Deployment工作负载的公司业务。

优点:

  • 工作负载内置Rollout能力,配置简单;

  • 功能丰富,各种发布策略、流量灰度、Metrics分析。

缺点:

  • 不支持社区Deployment、StatefulSet(存量需要迁移);

  • 独立体系,与社区诸多方案存在Gap(需要定制化)。

Flagger的设计理念

Flagger是一个能使运行在K8s体系上的应用发布流程全自动(无人参与)的工具,它能减少发布的人为关注时间,并且在发布过程中能自动识别一些风险并回滚。

Flagger会创建一个Deployment Primary的工作负载,用户部署的工作负载为原数据,通过Copy Primary方式实现Rollout控制。Flagger适用于规模不大、基于社区方案部署、定制化较小的公司业务。

优点:

  • 支持原生Deployment API,功能丰富;

  • 兼容Helm、Argo-CD等社区方案。

缺点:

  • Rollout过程双倍Deployment资源消耗;

  • 自建容器服务平台需要额外对接(对K8s资源存在修改,如:名字-Primary)。

Kruise Rollouts的设计理念

百花齐放是云原生的一大特点,阿里云容器团队负责整个容器平台云原生架构的演进,在应用渐进式交付领域也有强烈的需求,因此在参考社区方案以及考虑阿里内部场景的基础上,我们在设计Rollout过程中有以下几个目标:

  • 非侵入性,支持原生Deployment API,不修改任何用户定义资源;

  • 可扩展性,支持Ingress、Gateway等多种资源;

  • 易用性,开箱即用,学习成本低,适用于Helm、Vela等多种部署方案。

Kruise Rollout工作机制与演进

Kruise Rollout API设计十分简单,可以分为四个部分。

  • objectRef:表明Kruise Rollout所作用的工作负载,如Deployment Name;

  • Strategy:定义Rollout发布的过程,如上图所示,是一个金丝雀发布的示例,第一批发布5%的实例,并且灰度5%流量到新版本,待人工确认后,再进行后续发布;

  • TrafficRouting:流量灰度所需要的资源Name,如Service、Ingress 或 Gateway API;

  • Status:展示Rollout的过程以及状态。

Kruise Rollout工作机制

首先,用户基于容器平台做一次版本发布(一次发布从本质上讲就是将K8s资源Apply到集群中)。

  • Kruise Rollout包含一个Webhook组件,它会拦截用户的发布请求,通过修改Workload Strategy的方式中止Workload控制器的工作;

  • 随后根据用户的Rollout定义,动态调整Workload参数;

  • 批次发布完成后,调整Ingress、Service配置,将特定的流量导入到新版本;

  • 最后,Kruise Rollout通过Prometheus中的业务指标判断发布是否正常。

支持Gateway API(verifying)

Kruise Rollout已经兼容Gateway API,而K8s集群目前使用最多的仍是Ingress。Ingress虽然协议简单,但会导致大量开源项目自定义Network资源的问题。

Gateway API是Network兴趣小组为了解决这个问题所提供的新的API,以替换Ingress。目前Istio、Nginx、Kong等诸多开源产品都实现了这套接口。

支持Deployment原地分批发布(design)

Deployment本身并不支持分批发布,如何做到支持Deployment原地分批发布呢?可以分为以下三个步骤:

  • 将Deployment的资源发布部署到K8s集群中,由Webhook拦截请求;

  • 由Kruise Rollout接管,根据修改的配置,调整升级策略,完成分批发布;

  • 在Kruise Rollout发布结束后,交还由K8s原生的控制器接管。

小结

随着K8s上面部署的应用日益增多,如何做到业务快速迭代与应用稳定性之间的平衡,是平台建设方必须要解决的问题。Kruise Rollout是OpenKruise在渐进式交付领域的新探索,旨在解决应用交付领域的流量调度以及分批部署问题。

Kruise Rollout目前已经正式发布v0.2.0版本,并且与社区OAM KubeVela项目进行了集成,Vela用户可以通过Addons快速部署与使用Rollout能力。此外,也希望社区用户能够加入进来,一起在应用交付领域做更多的扩展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阿里云赵明山:详解灵活可插拔的渐进式发布框架OpenKruise Rollout 的相关文章

  • 全功能tgbot/Telegram机器人多功能有后台版源码

    全功能tgbot telegram机器人多功能有后台版源码 打包好的可以直接上手 trx兑换 闪兑 关键字监控 群管 usdt监控 余额查询 推广分享 等几乎常见的tg机器人功能都有
  • 期权怎么开户:期权开户免费吗,需要什么样的门槛?

    期权开户是免费的 只有交易才会产生费用 开通期权账户需要满足50万的资金 以及融资融券交易经验或者金融期货交易经验 当然也有免50万门槛的开户方式 下文为大家科普期权怎么开户啊 期权开户免费么 一般情况下 期权是可以通过在营业部网点进行开户
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 从不同维度的调研数据,看企业数字化转型

    数字化转型逐渐成为企业增长和价值创造的新引擎 然而 在复杂的背景下 企业数字化转型也面临着前所未有的挑战和机遇 未来 我们还能做些什么 怎么做 这成为了各企业高管当前亟需厘清的问题 企业做数字化转型的原因 总体来看 大部分受访企业做数字化转
  • 闵氏距离在文本检索中的应用

    1 背景介绍 文本检索是现代信息处理系统中不可或缺的一部分 它的主要目标是根据用户的查询需求 从海量的文本数据中找出与查询最相关的文档 随着互联网的普及 文本数据的规模不断膨胀 这导致了传统的文本检索方法面临着巨大的挑战 为了解决这些问题
  • 机器智能与人类智能的合作:认知能力的提升

    1 背景介绍 在过去的几十年里 人工智能 AI 技术的发展取得了显著的进展 从早期的规则引擎和专家系统到现代的深度学习和神经网络 AI已经成功地解决了许多复杂的问题 然而 尽管如此 人工智能仍然远远低于人类智能 人类智能的强大之处在于其认知
  • 机器学习与人类智能的融合:未来趋势与挑战

    1 背景介绍 人工智能 Artificial Intelligence AI 是指一种以计算机程序为代表的智能方法 可以理解 学习和应用人类智能的某些方面 机器学习 Machine Learning ML 是人工智能的一个子领域 它涉及到计
  • 慢思维大脑:SOP流程的心理学背景

    1 背景介绍 慢思维大脑 SOP流程的心理学背景 慢思维是指人类大脑在处理复杂问题 做出重要决策时所采用的思考方式 它与快速 自动的快思维相对 主要通过以下几种方式表现 深入思考 慢思维会让人类大脑深入思考问题的本质 从而找出更深层次的解决
  • AI大模型应用入门实战与进阶:如何训练自己的AI模型

    1 背景介绍 人工智能 Artificial Intelligence AI 是计算机科学的一个分支 旨在模拟人类智能的能力 包括学习 理解自然语言 识别图像和视频 进行决策等 随着数据量的增加和计算能力的提升 人工智能技术的发展得到了巨大
  • 流程管理的未来:人工智能如何改变业务运行

    1 背景介绍 流程管理是企业在实现业务目标时所采取的一系列有序 连贯的活动 它涉及到许多领域 如生产 销售 研发 财务等 随着企业规模的扩大和市场竞争的激烈 流程管理的复杂性也不断增加 人工智能 AI 技术的发展为流程管理提供了新的机遇 有
  • 人工智能与机器学习:未来的编程范式

    1 背景介绍 人工智能 Artificial Intelligence AI 和机器学习 Machine Learning ML 是现代计算机科学的重要领域之一 它们旨在让计算机能够自主地学习 理解和进化 以解决复杂的问题 随着数据量的增加
  • RF自动化环境安装+自动化实例解析

    RF定义 通用型的 自动测试框架 绝大部分的软件的的自动化系统都可以采用它 特点 测试数据文件 Test Data 对应一个个的测试用例 测试数据文件里面使用的功能小模块叫关键字 由测试库 Test Library Robot Framew
  • 2024年华数杯国际赛B题:光伏发电功率 思路模型代码解析

    2024年华数杯国际赛B题 光伏发电功率 Photovoltaic Power 一 问题描述 中国的电力构成包括传统能源发电 如煤 油和天然气 可再生能源发电 如水电 风能 太阳能和核能 以及其他形式的电力 这些发电模式在满足中国对电力的巨
  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • 问CHAT很繁琐的问题会不会有答案呢?

    问CHAT 什么已有的基于极值理论的极端温度重现期主要针对极端高温事件 对极端低温事件研究较少 CHAT 回复 为这主要可能是由于以下几个原因 1 气候变化与全球变暖 当前 全球变暖和气候变化的问题备受关注 这导致科研者更加关注极端高温事件
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • 扬帆证券:突发利好!外资重大转变,A股收到多份喜报

    A股财报季 利好音讯密集传来 1月16日晚间 A股多家上市公司披露了成绩预告 其间成绩预增 扭亏等利好公告数量占比超80 其间 普瑞眼科公告 估计2023年净赢利同比添加高达1163 98 1285 51 别的 多家上市公司公告称 估计20
  • 渗透测试常用工具汇总_渗透测试实战

    1 Wireshark Wireshark 前称Ethereal 是一个网络分包分析软件 是世界上使用最多的网络协议分析器 Wireshark 兼容所有主要的操作系统 如 Windows Linux macOS 和 Solaris kali
  • 2023下半年软考「单独划线」合格标准公布

    中国计算机技术职业资格网发布了 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告 2023下半年软考单独划线地区合格标准各科目均为42分 01 官方通告 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告

随机推荐

  • 模型评估中测试集的选择方法

    前言 对训练好的模型进行评估 目的是为了测试我们所训练的模型是否拥有好的泛化能力 为此 需使用一个 测试集 来测试学习器对新样本的判别能力 然后以测试集上的 测试误差 作为泛化误差的近似 通常我们假设测试样本也是从样本真实分布中独立同分布采
  • Android 贝塞尔曲线实战之网易云音乐鲸云特效,2021程序员进阶宝典

    一阶这个比较简单 因为没有在网上找到可以直接输入数学公式的工具 就手工推导了下 在这里插入图片描述 https img Android学习笔记总结 最新移动架构视频 大厂安卓面试真题 项目实战源码讲义 docs qq com doc DSk
  • HAL库 STM32CubeMX----SPI驱动OLED 与 IIC驱动MPU6050

    SPI驱动6针OLED SPI的配置方法 芯片的选择 配置RCC SYS 时钟树 设置下载方式 设置系统主频 以上与之前的工程配置相同 可选SPI1或SPI2 Mode模式在此选择全双工主模式 OLED屏幕仅需要接受来自单片机的通信信号 也
  • 【Linux】VNC xfc4安装指导

    1 xfce4软件介绍 Xfce是一个自由软件 运行在类Unix操作系统 如Linux FreeBSD 和 Solaris 上 提供轻量级桌面环境 Xfce快速 轻量 界面美观和对用户友好 Xfce由独立的软件组件构成 可根据需要单独使用或
  • STM32F042F6P6生成HID工程模拟USB鼠标

    原文地址 http www stm32cube com article 141 相关文章 1 STM32F042F6P6 USB设备开发最小系统之键盘示例 http www stm32cube com article 143 就是这个板子
  • 程序员必知的23种设计模式之观察者模式

    文章目录 1 模式引出 天气预报项目需求 1 1 天气预报普通设计方案 1 2 代码实现 2 观察者模式原理 3 观察者模式解决天气预报需求 4 观察者模式的好处 5 观察者模式在Jdk1 8的应用 1 模式引出 天气预报项目需求 天气预报
  • 均值与方差

    均值是指一组数的平均数值 可以分为 算术平均值 一组数求和再除以总个数 它主要表示一组数的平均水平 几何平均值 平方平均值 均方根平均值 调和平均值 加权平均值等 方差 指各个数据与平均数之差的平方和的平均数 方差和标准差都是对一组 一维
  • UGUI改图片:位置、尺寸(踩坑)

    另外一篇博客 UGUI图片 代码修改尺寸 锚定方式为父物体的四条边时 请见 https blog csdn net weixin 42935398 article details 107044335 目录 我的代码 问题 解决 总结 我的代
  • 抽奖组件lucky-canvas

    https 100px net usage wx html 次组件可以画轮盘和九宫格 老虎机抽奖画面
  • 微软必应Bing搜索引擎这几天无法访问!

    微软必应Bing搜索引擎这几天无法访问 一 用必应 Bing 临时域名 www2 bing com 或者 www4 bing com 临时域名博主验证有效 二 修改hosts文件 用户只需要暂时修改下host然后坐等微软服务器恢复后再删除即
  • c#winform使用WebBrowser 大全

    C WinForm WebBrowser 一 MSDN资料 1 主要用途 使用户可以在窗体中导航网页 2 注意 WebBrowser 控件会占用大量资源 使用完该控件后一定要调用 Dispose 方法 以便确保及时释放所有资源 必须在附加事
  • 微信分享链接标题和小图片-不通过公众号接口开发

    方法一 不通过公众号接口开发 在boby 和head之间添加下面的代码即可 图片路径自行修改 注意这个图片必须是大于300px300px的 div style margin 0 auto width 1px height 1px img s
  • 把字符串转换成整数(最详细解答)

    题目要求 分析 把一个一个字符以整数的形式来进行输出 需要考虑相互转化的问题 不能使用库函数 首尾会有空格 进行去空格操作 可以减少不必要的判断 区分正负正数 结果可能会越界 题目给的是Integer类型 当超过最大范围或者小于最小范围 有
  • hihoCoder #1000: A+B

    时间限制 1000ms 单点时限 1000ms 内存限制 256MB 描述 求两个整数A B的和 输入 输入包含多组数据 每组数据包含两个整数A 1 A 100 和B 1 A 100 输出 对于每组数据输出A B的和 样例输入 1 2 3
  • 单元测试(二)—— Jest结合Vue-test-utils入门实战

    文章目录 前言 介绍 语法实战 Shallow Rendering DOM结构 测试Props 总结 前言 公共组件 在我们编写测试用例之前 首先需要确认我们的目标组件到底是什么 我的理解为 在我们的项目中通常会分为两种类型的组件 一种为业
  • JAVA学习路线,面试复习方向指引

    前言 好久没有沉下心学习一波了 总结了一份简单的java学习内容 包含java开发大概的技术栈 后续每个部分寻找一些面试题专项学习 本篇先写一个大概的知识概括 后面逐渐加内容 慢慢丰满 有一起学习的朋友欢迎交流 共同进步 学问须学 不学则殆
  • 二、Xshell如何连接虚拟机

    Xshell如何连接虚拟机 安装Vmware时 会自动在windows安装虚拟网卡 在Vmware中设定虚拟交换机网段 圈定主机能使用的ip地址 虚拟网卡会自动获取一个ip地址 创建linux服务器时 选定网络模式为NAT ip地址为该网段
  • 05JWT实现微服务鉴权

    05 JWT 实现微服务鉴权 5 1 什么是微服务鉴权 我们之前已经搭建过了网关 使用网关在系统中比较适合进行权限校验 那么我们可以采用JWT的方式来实现鉴权校验 5 2 JWT JSON Web Token JWT 是一个非常轻巧的规范
  • STM32 USB AUDIO教程——导读

    STM32 USB AUDIO教程 基于正点原子的STM32F407探索者开发板 通过CUBEMX 移植等方式实现USB音频播放speaker和USB音频录制mic等功能 资料篇 主要是X CUBE USB AUDIO资料的概述和翻译 基础
  • 阿里云赵明山:详解灵活可插拔的渐进式发布框架OpenKruise Rollout

    嘉宾 赵明山 随着K8s及云原生理念的普及 尤其是在持续部署流水线出现后 渐进式交付为互联网应用提供了基础设施和实现方法 2022年7月27日 在由开放原子开源基金会主办的 2022开放原子全球开源峰会 上 阿里云技术专家 OpenKrui