采用 Istio 项目的一大好处就是为服务金丝雀方式部署提供了控制便利。金丝雀部署(或上线)背后的想法是通过让一小部分用户流量引入的新版本进行测试,如果一切顺利,则可以增加(可能逐渐增加)百分比,逐步替换旧版本。如在过程中出现任何问题,则可以中止并回滚到旧版本。最简单的方式,是随机选择百分比请求到金丝雀版本,但在更复杂的方案下,则可以基于请求的区域,用户或其他属性。 基于领域的专业水平,您可能想知道为什么需要 Istio 来支持金丝雀部署,因为像 Kubernetes 这样的平台已经提供了进行版本上线和金丝雀部署的方法。问题解决了吗 ?不完全是。虽然以这种方式进行部署可以在简单的情况下工作,但功能非常有限,特别是在大规模自动缩放的云环境中大流量的情况下。 Kubernetes 中的金丝雀部署 假设我们有一个已部署的 helloworld 服务 v1 版本,我们想要测试(或简单上线)新版本 v2 。使用 Kubernetes,您可以通过简单地更新服务的 Deployment 中的镜像并自动进行部署来上线新版本的 helloworld 服务。如果我们特能够小心保证在启动并且在仅启动一个或两个 v2 副本暂停上线时有足够的 v1 副本运行,则能够保持金丝雀发布对系统的影响非常小。后续我们可以观察效果,或在必要时进行回滚。最好,我们也能够对 Deployment 设置 HPA,在上线过程中减少或增加副本以处理流量负载时,也能够保持副本比例一致。 尽管这种机制能够很好工作,但这种方式只适用于部署的经过适当测试的版本,也就是说,更多的是蓝/绿发布,又称红/黑发布,而不是 "蜻蜓点水" 式的金丝雀部署。实际上,对于后者(例如,并没有完全准备好或者无意对外暴露的版本),Kubernetes 中的金丝雀部署将使用具有公共 pod 标签的两个 Deployment 来完成。在这种情况下,我们不能再使用自动缩放器,因为是有由两个独立的自动缩放器来进行控制,不同负载情况下,副本比例(百分比)可能与所需的比例不同。 无论我们使用一个或者两个部署,使用 Docker,Mesos/Marathon 或 Kubernetes 等容器编排平台进行的金丝雀发布管理都存在一个根本问题:使用实例扩容来管理流量;版本流量分发和副本部署在上述平台中并独立运行。所有 pod 副本,无论版本如何,在 kube-proxy 循环池中都被一视同仁地对待,因此管理特定版本接收的流量的唯一方法是控制副本比例。以小百分比维持金丝雀流量需要许多副本(例如,1% 将需要至少 100 个副本)。即使我们可以忽略这个问题,部署方式功能仍然非常有限,因为它只支持简单(随机百分比)金丝雀部署。如果我们想根据某些特定规则将请求路由到金丝雀版本上,我们仍然需要另一种解决方案。 使用 Istio 使用 Istio,流量路由和副本部署是两个完全独立的功能。服务的 pod 数量可以根据流量负载灵活伸缩,与版本流量路由的控制完全正交。这在自动缩放的情况下能够更加简单地管理金丝雀版本。事实上,自动缩放管理器仍然独立运行,其在响应因流量路由导致的负载变化与其他原因导致负载变化的行为上没有区别。 Istio 的路由规则也带来了其他的便利;你可以轻松实现细粒度控制流量百分比(例如,路由 1% 的流量而不需要 100 个 pod),当然也可以使用其他规则来控制流量(例如,将特定用户的流量路由到金丝雀版本)。作为展示,让我们看一下采用这种方式部署 helloworld 服务的简单便捷。 首先我们定义 helloworld 服务,和普通 Kubernetes 服务一样,如下所示: apiVersion: v1 kind: Service metadata: name: helloworld labels: app: helloworld spec: selector: app: helloworld ... 然后我们添加 2 个 Deployment,分别为版本 v1 和 v2 ,这两个版本都包含服务选择标签 app:helloworld : kind: Deployment metadata: name: helloworld-v1 spec: replicas: 1 template: metadata: labels: app: helloworld version: v1 spec: containers: - image: helloworld-v1 ... --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: helloworld-v2 spec: replicas: 1 template: metadata: labels: app: helloworld version: v2 spec: containers: - image: helloworld-v2 ... 需要注意的是,这与使用普通 Kubernetes 进行金丝雀部署的方式完全相同,但是在 Kubernetes 方式下控制流量分配需要调整每个 Deployment 的副本数目。例如,将 10% 的流量发送到金丝雀版本(v2),v1 和 v2 的副本可以分别设置为 9 和 1。 但是在启用 Istio 的集群中,我们可以通过设置路由规则来控制流量分配。如将 10% 的流量发送到金丝雀版本本,我们可以使用 kubectl 来设置以下的路由规则: $ kubectl apply -f - <
15分钟破解19款手机,人脸识别还能走多远?人脸识别技术在智能手机上已经是标配,今天的我们刷脸解锁刷脸支付就像吃饭喝水一样自然。然而人脸识别却被频频爆出信息信息泄露的新闻。人脸识别真的万无一失吗?最近一段时间,来自清华的Re截止9月!这4款手机迎来大降价华强北内行哥告诉你怎么选九月份已经是正式拉开手机市场的新老交替了,下半年不少新机的发布,让老款手机价格也降下去了!今天小编也是和华强北老板合计了截止九月今年的一些降价机,从千元机到旗舰都有,大家看看有没有如果太阳不发热,地球温度会是多少?在科幻片中,经常会出太阳不见了,太阳不发光了,或者小行星撞地球之后,遮天蔽日,总而言之,地球的能量几乎都来自于太阳辐射,太阳辐射没了,也就是说太阳不能再给地球温暖了。如果是这样,人给孩子打印作业,到底激光打印机好还是墨盒的那种?推荐墨盒的,1。便宜经济实惠,既然老师经常发题,那就不存在喷头会干,因为经常用。只有一个月打印不了一次才会有可能。2。可能也会有污染,但比激光的碳粉吸入肺部要危害小吧?当然激光的,一千多块钱的液晶电视靠谱吗?一分价钱一分货,电视机也不例外,同样55寸的液晶电视,1000多块钱也能买一台,五六千七八千块也能买一台,虽然说尺寸来说都是一样的,但是包括机器的配置,做工以及用料都有很大的差别,给字节跳动二十年时间(到2040年),它能不能赶超巨头百度?按目前的状态发展20年字节跳动有望成为全球第一的互联网公司,跟那几个窝里斗的主不一样,他一开始就走国际化路线,而且产品一个接一个都很成功说明企业的用人策略发展策略很成功,他要早点上特斯拉ModelY差点拿第一,航海家是黑马,8月高端SUV销量简评2021年8月份高端SUV销量出炉,注意,这里的高端SUV值得是指导价超过30万元的SUV产品。一起来看看有什么亮点和槽点吧。第一名是宝马X3,目前宝马的产品确实很受欢迎,不仅仅是新能源补贴账单公布比亚迪5年获40亿,特斯拉1年拿21亿中国亿级新能源汽车市场,政策扶持与推广补贴多年来充当着非常重要的推手。近日,随着工信部发布关于20162020年度新能源汽车推广应用补助资金清算审核初审情况的公示,补贴问题再次成为韩系动向483捷尼赛思车型命名混乱,新能源命名有重大失误?捷尼赛思是在新能源汽车时代下诞生的一个传统汽车品牌。所以在这样的一个时间节点上,捷尼赛思品牌要想发展起来是很困难的。一方面是因为如今的汽车时代,是新能源汽车时代。最近几年诞生的新品中兴通讯董事长李自学推动数字经济协同发展,形成产业大格局当前,数字经济在我国的国民经济发展中占据重要地位,发挥着全新动能。因此有专家指出数字经济是新一轮科技革命和产业变革最强劲的力量和最核心的引擎,也是我国经济高质量发展的关键。据信通院2021。09。11数字货币快讯1。比特币平均算力相比7月初已恢复50。2。Robinhood推出加密货币经常性投资选项。3。国际清算银行官员主要央行现在应该推进数字货币项目。4。Algorand基金会宣布推出3