返回顶部
首页 > 资讯 > 精选 >kubernetes中Istio实现金丝雀发布原理是什么
  • 317
分享到

kubernetes中Istio实现金丝雀发布原理是什么

2023-06-04 16:06:19 317人浏览 独家记忆
摘要

这期内容当中小编将会给大家带来有关kubernetes中Istio实现金丝雀发布原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一:简介    互联网产品用户数量庞大

这期内容当中小编将会给大家带来有关kubernetesIstio实现金丝雀发布原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一:简介

    互联网产品用户数量庞大,如果采用全量发布的话不论对于开发运维团队有着未知的风险,而且产品以及运营团队也同样面临的用户体验的巨大挑战。

二:藍綠发布

   在发布的过程中用户无感知服务的重启,通常情况下是通过新旧版本并存的方式实现,也就是说在发布的流程中,新的版本和旧的版本是相互热备的,通过切换路由权重的方式(非0即100)实现不同的应用的上线或者下线.

  发布流程:

(1) 部署版本1的应用(一开始的状态),所有外部请求的流量都打到这个版本上。

(2) 部署版本2的应用,版本2的代码与版本1不同(新功能、Bug修复等)。

(3) 将流量从版本1切换到版本2。

(4) 如版本2测试正常,就删除版本1正在使用的资源(例如实例),从此正式用版本2。

kubernetes中Istio实现金丝雀发布原理是什么

kubernetes中Istio实现金丝雀发布原理是什么

三:滚动发布

滚动发布,一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本。这种部署方式相对于蓝绿部署,更加节约资源——它不需要运行两个集群、两倍的实例数。我们可以部分部署,例如每次只取出集群的百分之二十进行升级。

这种方式也有很多缺点,例如:

(1) 没有一个确定OK的环境。使用藍綠部署,我们能够清晰地知道老版本是OK的,而使用滚动发布,我们无法确定。

(2) 修改了现有的环境。

(3) 如果需要回滚,很困难。举个例子,在某一次发布中,我们需要更新100个实例,每次更新10个实例,每次部署需要5分钟。当滚动发布到第80个实例时,发现了问题,需要回滚。

(4) 有的时候,我们还可能对系统进行动态伸缩,如果部署期间,系统自动扩容/缩容了,我们还需判断到底哪个节点使用的是哪个代码。尽管有一些自动化的运维工具,但是依然令人心惊胆战。

并不是说滚动发布不好,滚动发布也有它非常合适的场景。

四:金丝雀发布

金絲雀发布是指在黑与白之间,能够平滑过渡的一种发布方式。金絲雀发布是增量发布的一种类型,金絲雀发布是在原有版本可用的情况下,同时部署一个新版本应用作为“金丝雀”,测试新版本的性能和表现,以保障整体系统稳定的情况下,尽早发现、调整问题。

  金丝雀发布由以下几个步骤组成:

(1)准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。

(2)从负载均衡列表中移除掉“金丝雀”服务器

(3)升级“金丝雀”应用(排掉原有流量并进行部署)。

(4)对应用进行自动化测试

(5)将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。

(6)如果“金丝雀”在线使用测试成功,升级剩余的其他服务器。(否则就回滚)

金絲雀可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

金丝雀部署适用的场景:

(1)不停止老版本,额外搞一套新版本,不同版本应用共存。

(2)灰度发布中,常常按照用户设置路由权重,例如百分之九十的用户维持使用老版本,百分之十的用户尝鲜新版本。

(3)经常与A/B测试一起使用,用于测试选择多种方案。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来

kubernetes中Istio实现金丝雀发布原理是什么

五:Istio实现金丝雀发布原理

金丝雀发布的流程如下:

(1)准备和生产环境隔离的“金丝雀”服务器。

(2)将新版本的服务部署到“金丝雀”服务器上。

(3)对“金丝雀”服务器上的服务进行自动化和人工测试。

(4)测试通过后,将“金丝雀”服务器连接到生产环境,将少量生产流量导入到“金丝雀”服务器中。

(5)如果在线测试出现问题,则通过把生产流量从“金丝雀”服务器中重新路由到老版本的服务的方式进行回退,修复问题后重新进行发布。

(6)如果在线测试顺利,则逐渐把生产流量按一定策略逐渐导入到新版本服务器中。

(7)待新版本服务稳定运行后,删除老版本服务。

从上面的流程可以看到,如果要实现一套金絲雀發佈的流程,需要应用程序和运维流程对该发布过程进行支持,工作量和难度的挑战是非常大的。虽然面对的问题类似,但每个企业或组织一般采用不同的私有化实现方案来进行灰度发布,为解决该问题导致研发和运维花费了大量的成本。

Istio通过高度的抽象和良好的设计采用一致的方式解决了该问题,采用sidecar对应用流量进行了转发,通过Pilot下发路由规则,可以在不修改应用程序的前提下实现应用的灰度发布。

备注:采用kubernetes的滚动升级(rolling UPDATE)功能也可以实现不中断业务的应用升级,但滚动升级是通过逐渐使用新版本的服务来替换老版本服务的方式对应用进行升级,在滚动升级不能对应用的流量分发进行控制,因此无法采用受控地把生产流量逐渐导流到新版本服务中,也就无法控制服务升级对用户造成的影响。

采用Istio后,可以通过定制路由规则将特定的流量(如指定特征的用户)导入新版本服务中,在生产环境下进行测试,同时通过渐进受控地导入生产流量,可以最小化升级中出现的故障对用户的影响。并且在同时存在新老版本服务时,还可根据应用压力对不同版本的服务进行独立的缩扩容,非常灵活。

采用Istio进行金絲雀发布的流程如下图所示:

部署Reviews-V1,所有的流量指向V1

kubernetes中Istio实现金丝雀发布原理是什么

部署Reviews-V2

kubernetes中Istio实现金丝雀发布原理是什么

通过采用Istio的路由规则,将部分流量导入V2 (如百分之十)

kubernetes中Istio实现金丝雀发布原理是什么

逐步增加流量配置

kubernetes中Istio实现金丝雀发布原理是什么

流量全部切换到V2,删除V1

kubernetes中Istio实现金丝雀发布原理是什么

上述就是小编为大家分享的kubernetes中Istio实现金丝雀发布原理是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: kubernetes中Istio实现金丝雀发布原理是什么

本文链接: https://lsjlt.com/news/238643.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • kubernetes中Istio实现金丝雀发布原理是什么
    这期内容当中小编将会给大家带来有关kubernetes中Istio实现金丝雀发布原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一:简介    互联网产品用户数量庞大...
    99+
    2023-06-04
  • Kubernetes如何实现前后端应用的金丝雀发布
    这篇文章主要讲解了“Kubernetes如何实现前后端应用的金丝雀发布”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes如何实现前后端应用的金丝雀发布”吧!Deploymen...
    99+
    2023-06-21
  • 基于Kubernetes实现前后端应用的金丝雀发布(两种方案)
    公司的研发管理平台实现了Gitlab+Kubernetes的Devops,在ToB和ToC场景中,由于用户量大,且预发布环境和生产环境或多或少存在差异,使得生产环境发布版本的时候还是...
    99+
    2024-04-02
  • kubernetes中实现Istio流量管理有什么好处
    小编给大家分享一下kubernetes中实现Istio流量管理有什么好处,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:简介Istio流量管理的核心组件是Pil...
    99+
    2023-06-04
  • OAM Kubernetes 实现核心原理是什么
    OAM Kubernetes 实现核心原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。OAM 因何而生我们知道,应用容器技术自诞生开始,就以 “彻底改变...
    99+
    2023-06-04
  • kubernetes中的Scheduler原理是什么
    本篇文章为大家展示了kubernetes中的Scheduler原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一: 简介1.Kubernetes  scheduler在整个系统中承...
    99+
    2023-06-04
  • kubernetes资源QOS机制实现原理是什么
    本篇内容主要讲解“kubernetes资源QOS机制实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“kubernetes资源QOS机制实现原理是什么”吧!QOS是k8s中一种资源保护...
    99+
    2023-06-19
  • kubernetes控制器StatefulSet核心实现原理是什么
    本篇内容主要讲解“kubernetes控制器StatefulSet核心实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“kubernetes控制器St...
    99+
    2024-04-02
  • redis实现分布式锁的原理是什么
    这期内容当中小编将会给大家带来有关redis实现分布式锁的原理,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常...
    99+
    2024-04-02
  • redis分布式锁的实现原理是什么
    这篇文章主要讲解了“redis分布式锁的实现原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“redis分布式锁的实现原理是什么”吧!借助于redis...
    99+
    2024-04-02
  • SequoiaDB 分布式事务实现原理是什么
    这篇文章将为大家详细讲解有关SequoiaDB 分布式事务实现原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1分布式事务背景随着分布式数据库技术的...
    99+
    2024-04-02
  • InterProcessMutex实现zookeeper分布式锁原理是什么
    这篇“InterProcessMutex实现zookeeper分布式锁原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇...
    99+
    2023-06-29
  • MongoDB中实现原理是什么
    今天就跟大家聊聊有关MongoDB中实现原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。主流程MyCAT Server 接收 MySQL C...
    99+
    2024-04-02
  • go分布式缓存的实现原理是什么
    Go分布式缓存的实现原理通常包括以下几个步骤: 数据分片:将数据按照一定的规则进行分片,通常使用哈希算法来实现。每个节点负责一部...
    99+
    2024-02-29
    go
  • mysql分布式集群实现的原理是什么
    MySQL分布式集群实现的原理主要依靠数据分片、数据复制和数据同步来实现。具体原理如下: 数据分片:将数据库中的数据划分为多个片...
    99+
    2024-04-09
    mysql
  • AngularJS 事件发布机制的原理是什么
    AngularJS 事件发布机制的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。未读消息提醒当器具用户或技术机构对非...
    99+
    2024-04-02
  • Go分布式链路追踪实现原理是什么
    本文小编为大家详细介绍“Go分布式链路追踪实现原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Go分布式链路追踪实现原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。为什么需要分布式链路追踪系统微...
    99+
    2023-07-02
  • GO并发模型的实现原理是什么
    这篇文章主要介绍了GO并发模型的实现原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇GO并发模型的实现原理是什么文章都会有所收获,下面我们一起来看看吧。前言请记住下面这句话:DO NOT COMMUNI...
    99+
    2023-06-30
  • Redis分布式锁的原理是什么和怎么实现
    这篇文章主要介绍了Redis分布式锁的原理是什么和怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Redis分布式锁的原理是什么和怎么实现文章都会有所收获,下面我们一起来看看吧。1 一人一单并发安全问题之...
    99+
    2023-07-04
  • android中事件分发机制的实现原理是什么
    android中事件分发机制的实现原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。android中的事件处理,以及解决滑动冲突问题都离不开事件分发机制,androi...
    99+
    2023-05-30
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作