Istio 1.5 发布——拥抱变化,爱上单体

北京时间 2020 年 3 月 6 日凌晨,我们期待已久的 Istio 1.5 发布了,发布公告见 https://istio.io/news/releases/1.5.x/announcing-1.5/。由 ServiceMesher 社区组织翻译的 Istio 官方文档同时发布,见 https://istio.io/zh。

Istio 1.5 是一个具有重大变革的版本。长久以来,面对社区对 Istio 的性能和易用性的诟病,Istio 团队终于正视自身的问题,在当前版本中彻底推翻了原有控制平面的架构,完成了重建。正如 Simplified Istio 文中所说:

复杂是万恶之源,让我们停止焦虑,爱上单体。

Istio 1.5 回归单体,无论架构和使用方式都发生了巨大变化。因此笔者决定对 1.5 的变化内容做深入解读,以便开发者可以更好的理解和学习新版本,为使用和升级提供参考。

架构调整

这部分主要分析 Istio 1.5 在架构上的调整,这也是该版本最核心的变化。主要包括重建了控制平面,将原有的多个组件整合为一个单体结构 istiod;同时废弃了被诟病已久的 Mixer 组件。还对是否向后兼容的部分也做了说明,如果你要从 1.4.x 版本升级到 1.5 必须知道这些变化。

重建控制平面

官方使用的是重建(Restructuring)而不是重构(Refactoring)一词,可见其变化之大。在 Istio 1.5 中,控制平面将使用新的部署模式,将原有的各个组件整合在一起。

Istiod

Istio 1.5 中会使用一个全新的部署模式:istiod。这个组件是控制平面的核心,负责处理配置、证书分发、sidecar 注入等各种功能。istiod 是新版本中最大的变化,以一个单体组件替代了原有的架构,在降低复杂度和维护难度的同时,也让易用性得到提升。需要注意的一点是,原有的多组件并不是被完全移除,而是在重构后以模块的形式整合在一起组成了 istiod

Sidecar 注入

以前版本的 sidecar 注入是由 istio-sidecar-injector webhook 实现的。在新版本中 webhook 保留了下来,但整合进了 istiod 中,注入逻辑保持不变。

Galley

  • 配置验证 - 功能保留,并入 istiod

  • MCP Server - 改为默认关闭。对于大多数用户来说只是一个实现细节。如果确定依赖它,需要部署 istio-galley 并启动其进程。

  • 实验特性(例如配置分析)- 也需要部署 istio-galley

Citadel

以前 Citadel 的 2 个功能是生成证书以及 SDS 开启时以 gRPC 方式向 nodeagent 提供密钥。1.5 版本中密钥不再写入每个命名空间,只通过 gRPC 提供。这一功能也被并入 istiod

SDS 节点代理

nodeagent 被移除。

Sidecar

以前,sidecar 能以两种方式访问证书:以文件挂载的密钥;SDS。新版本中所有密钥都存在本地运行的 SDS 服务器上。对绝大部分用户来说只需要从 istiod 中获取。对于自定义 CA 的用户,仍然可以挂载文件密钥,不过仍然由本地 SDS 服务器提供。这意味着证书轮询将不再需要 Envoy 重启。

CNI

CNI 没有改变,仍在 istio-cni 中。

Pilot

istio-pilot 的独立组件和进程被移除,由包含了它全部功能的 istiod 取而代之。为了向后兼容,仍有少许对 Pilot 的引用。

废弃 Mixer

在 Istio 1.5 中 Mixer 被废弃了。默认情况下 mixer 完全关闭。遥测的 V2 版本在新版本中是默认特性且不需要 mixer。如果你对 Mixer 的特殊功能有依赖,比如进程外适配器,需要重新开启 Mixer。Mixer 还会持续修复 bug 和安全漏洞直到 Istio 1.7 版本。mixer 的许多功能在 Mixer Deprecation 文档中都描述了替代方案,包括基于 Wasm sandbox API 的 in-proxy 扩展.

新版本中 HTTP 遥测默认基于 in-proxy Stats filter。这节省了 50% 的 CPU 使用量。1.5 中的遥测 V2 和老版本主要有以下几点不同:

  • 流量的源和目标如果没有注入 sidecar,部分遥测信息将无法收集。

  • Egress 遥测不再支持。

  • Histogram bucketization 和 V1 版本有很大不同。

  • TCP 遥测只支持 mTLS。

  • 需要更多的 Prometheus 实例来伺服所有的代理。

如果开发者之前使用的是 Istio 默认的 HTTP 遥测,迁移到新版本是没问题的。可以直接通过 istioctl upgrade 自动升级到 V2。

最被社区开发者唾弃的 Mixer 终于被废弃,可以说它是影响老版本性能的罪魁祸首。现在皆大欢喜,甚至呼声最高的 Wasm 方案也提上日程。当然我们也能看出 Istio 团队为了保证老版本的升级依赖并没有一刀切的干掉 Mixer,持续修复 bug 到 1.7 版本的深层含义是它会在 1.7 的时候被彻底移除?

控制平面安全

老版本中,当设置了 values.global.controlPlaneSecurityEnabled=true 时,代理将安全地与控制平面交互,这是 1.4 版本的默认配置。每个控制平面组件都有一个带有 Citadel 证书的 sidecar,代理通过端口 15011 连接到 Pilot。

新版本中,不再推荐或以默认方式将代理连接到控制平面。作为替代,使用由 Kubernetes 或 Istiod 签发的 DNS 证书。代理通过端口 15012 连接到 Pilot。

功能更新

Istio 1.5 不仅仅做了减法,也做了很多加法,包括添加了新的功能,性能优化和 Bug 修复。这一部分列举了新版本中在流量管理、安全、遥测等多个功能方面的改进。

流量管理

  • 提升了 ServiceEntry 的性能。

  • 修复了 readiness 探针不一致问题。

  • 通过定向局部更新的方式改善了配置更新的性能。

  • 添加了为 host 设置所在负载均衡器设置的选项。

  • 修复了 Pod 崩溃会触发过度配置推送的问题。

  • 修复了应用调用自己的问题。

  • 添加了使用 Istio CNI 时对 iptables 的探测。

  • 添加了 consecutive_5xxgateway_errors 作为离群值探测选项。

  • 提升了 EnvoyFilter 匹配性能优化。

  • 添加了对 HTTP_PROXY 协议的支持。

  • 改进了 iptables 设置,默认使用 iptables-restore

  • 默认开启自动协议探测。

安全

  • 添加 Beta 认证 API。新 API 分为 PeerAuthenticationRequestAuthenticaiton,面向工作负载。

  • 添加认证策略,支持 deny 操作和语义排除。

  • Beta 版本默认开启自动 mTLS。

  • 稳定版添加 SDS。

  • Node agent 和 Pilot agent 合并,移除了 Pod 安全策略的需要,提升了安全性。

  • 合并 Citadel 证书发放功能到 Pilot。

  • 支持 Kubernetes first-party-jwt 作为集群中 CSR 认证的备用 token。

  • 通过 Istio Agent 向 Prometheus 提供密钥和证书。

  • 支持 Citadel 提供证书给控制平面。

遥测

  • 为 v2 版本的遥测添加 TCP 协议支持。

  • 在指标和日志中支持添加 gRPC 响应状态码。

  • 支持 Istio Canonical Service

  • 改进 v2 遥测流程的稳定性。

  • 为 v2 遥测的可配置性提供 alpha 级别的支持。

  • 支持在 Envoy 节点的元数据中添加 AWS 平台的元数据。

  • 更新了 Mixer 的 Stackdriver 适配器,以支持可配置的刷新间隔来跟踪数据。

  • 支持对 Jaeger 插件的 headless 收集服务。

  • 修复了 kubernetesenv 适配器以提供对名字中有.的 Pod 的支持。

  • 改进了 Fluentd 适配器,在导出的时间戳中提供毫秒级输出。

Operator

  • IstioOperator API 替代了 IstioControlPlane API。

  • 添加了 istioctl operator initistioctl operator remove 命令。

  • 添加缓存改善了调和速度。

性能和扩展性

  • 为网关生成集群时忽略没用的服务。

  • 为 headless 服务略过调用 updateEDS

  • 在 ingress 网关中默认关闭 SNI-DNAT

  • 错误覆盖声明。

  • 容量已知时,基于容量创建切片。

测试和发布

  • istioctl 创建了Docker镜像。

istioctl

  • 添加 mTLS 分析器。

  • 添加 JwtAnalyzer。

  • 添加 ServiceAssociationAnalyzer。

  • 添加 SercretAnalyaer。

  • 添加 sidecar ImageAnalyzer。

  • 添加 PortNameAnalyzer。

  • 添加 Policy DeprecatedAnalyzer。

  • RequestAuthentication 添加了更多的验证规则。

  • istioctl analyze 从实验特性转为正式特性。

  • 添加新标记 -A|--all-namespacesistioctl analyze,来分析整个集群。

  • 添加通过 stdinistioctl analyze 的内容分析。

  • 添加 istioctl analyze -L 显示所有可用分析列表。

  • 添加从 istioctl analyze 抑制信息的能力。

  • istioctl analyze 添加结构化格式选项。

  • istioctl analyze 的输出添加对应的文档链接。

  • 通过 Istio API 在分析器中提供标注方法。

  • istioctl analyze 可以基于目录加载文件。

  • istioctl analyze 尝试将消息与它们的源文件名关联。

  • istioctl analyze 可打印命名空间。

  • istioctl analyze 默认分析集群内资源。

  • 修复分析器抑制集群级别资源消息的 bug。

  • istioctl manifest 添加多文件支持。

  • 替换 IstioControlPlane API 为 IstioOperator API。

  • istioctl dashboard 添加选择器.

  • istioctl manifest --set 标记添加切片和列表支持。

总结

Istio 1.5 是全面拥抱变化的一个版本。重建整个控制平面,打造了全新的部署模式 istiod;摒弃了拖累系统性能的 Mixer;保证兼容性也不忘持续优化和引入新的功能。在彻底抛弃历史包袱的同时,Istio团队也用他们的勇气践行了敏捷开发的真谛。随着稳定的季度发布,相信未来的 Istio 会越加成熟。让我们拭目以待。

 推荐阅读 

Service Mesh 通用数据平面 API(UDPA)最新进展深度介绍

Istio Handbook 重启写作邀请

使用了 Service Mesh 后我还需要 API 网关吗?

Service Mesh 终端用户调查报告

蚂蚁金服 Service Mesh 技术风险思考和实践

回归单体 —— Istio的自我救赎?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hbuilderx怎么添加断点_【高考语文题库】高考一直提分提不上去该怎么办?同一卷高考押题语文答案,助你再提30分...

大树从来不是在温室里长成的,而是在风霜雪雨的洗礼中参天的……古语云:“工欲善其事,必先利其器。”俗话说:“磨刀不误砍材工。”用到学习上就是学习必须讲究学习方法,有了适合自己的有效学习方法必定会事半功倍。一个…

业务模块化打造单体和分布式部署同步支持方案

我在2019年中国.NET开发者峰会上为大家分享了我们的微服务电商安全工程实践,那次会议分享的高清录播已经上传到我的腾讯课堂,大家可以通过底部的小程序打开直接观看(复习)。在大会上跟大家提到,我们当时只有4个人的创业…

Asp.Net Core EndPoint 终结点路由工作原理解读

Asp.Net Core EndPoint 终点路由工作原理解读一、背景在本打算写一篇关于Identityserver4 的文章时候,却发现自己对EndPoint -终结点路由还不是很了解,故暂时先放弃了IdentityServer4 的研究和编写;所以才产生了今天这篇关于EndPoint (终结点…

[蓝桥杯][算法提高VIP]夺宝奇兵-dp

题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ”夺宝奇兵”从山下出发,到达山顶,如何选路才能得到最多的珠宝呢?在上图所示例子中,按照5-> 7-> 8-&g…

迁移到其他机器_有赞大数据离线集群迁移实战

‍‍点击关注“有赞coder”获取更多技术干货哦~作者:郭理想 & 任海潮部门:数据中台一、背景有赞是一家商家服务公司,向商家提供强大的基于社交网络的,全渠道经营的 SaaS 系统和一体化新零售解决方案。随着近年来社…

C# 客户端内存优化分析

背景概述C# 开发客户端系统的时候,.net 框架本身就比较消耗内存资源,特别是xp 这种老爷机内存配置不是很高的电脑上运行,所以就需要进行内存上的优化,才能流畅的在哪些低端电脑上运行. 想要对C# 开发的客户端内存优化需要了解以下几个概念。虚拟内存这里…

xshell1分钟就会自动断_手术室自动门不能正常控制开关门维修案例

手术室自动门维修案例遵义市第五人民医院手术室的手术门。用户反映:不能正常控制开关门。一、原因分析:1.红外线安全传感器故障2.控制器故障3.直流电机故障4. 红外感应开关故障5.红外感应探头故障6.电源故障图1图2图3图4图5图6二、维修过程:1…

.NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)...

18 | 日志框架&#xff1a;聊聊记日志的最佳姿势除了使用 CreateLogger 指定 logger 的名称&#xff0c;实际上还可以借助容器来构造 logger&#xff0c;通常情况下我们会定义自己的类namespace LoggingSimpleDemo {public class OrderService{ILogger<OrderService> _lo…

《ASP.NET Core 微服务实战》送书结果公告

如何构建基于.NET Core和云环境下的微服务技术体系&#xff1f;的送书抽奖结果已经出来了&#xff1a;当前只有一位同学填写了地址。其他几位同学抓紧填写&#xff0c;3/9 日还没有完成填写将作废&#xff0c;奖品可是热门的《ASP.NET Core 微服务实战》。另外我公司商城上上线…

2020 年 Service Mesh 技术展望

背景有外文指出&#xff0c;2020 年 Service Mesh 技术将有以下三大发展&#xff1a;快速增长的服务网格需求&#xff1b;Istio 很难被打败&#xff0c;很可能成为服务网格技术的事实标准&#xff1b;出现更多的服务网格用例&#xff0c;WebAssembly 将带来新的可能。针对 Serv…

登录系统_执照管理系统登录与执照转换操作指南

执照管理系统登录与执照转换操作指南注&#xff1a;本操作指南适用于所有已经在CCAR-R2执照管理系统中注册的人员(无论是否参加过考试&#xff0c;无论有无考试通过科目).已经在旧系统中完成注册的人员无需在新系统中再次注册。只有完成本指南中的有关操作&#xff0c;才能正常…

BeetleX之XRPC远程委托调用

BeetleX.XRPC是基于接口的远程通讯组件,它不仅可以把接口提供客户端调用,同样也支持服务端创建客户端的接口实例并主动调用客户端的方法.接口有着非常的规范性和约束性,但前提你是必须制定相应的接口并实现才行;为了让通讯在.NET平台使用变得更简便,在新版中组件支持远程委托调…

常用决策树模型ID3、C4.5、CART算法

决策树概述 决策树&#xff08;decision tree&#xff09;&#xff1a;是一种基本的分类与回归方法&#xff0c;下面提到的ID3、C4.5、CART主要讨论分类的决策树。 在分类问题中&#xff0c;表示基于特征对实例进行分类的过程&#xff0c;可以认为是if-then的集合&#xff0c…

五分钟了解Consul

Hi&#xff0c;大家好&#xff0c;我叫consul&#xff0c;翻译成中文叫做“领事”&#xff0c;其实我更喜欢叫自己为中介&#xff0c;因为我觉得自己做的事情和房产中介非常像。比如说想要卖房的房东到我这边登记&#xff0c;我将房屋信息登录到我的表格中&#xff08;服务注册…

决策树可视化保姆级教程

决策树可视化指南 决策树是机器学习的一种经典的模型&#xff0c;因其泛化性能好&#xff0c;可解释性强而被广泛应用到实际商业预测中。通常在我们完成决策树模型搭建后&#xff0c;我们会进一步研究分析我们搭建好的模型&#xff0c;这时候模型的可视化就显得尤为重要。下面…

如何运用领域驱动设计 - 领域事件

开篇距离发布上一篇该系列的文章好像已经过了快一个半月了&#xff0c;好吧&#xff0c;我托更了????。一晃就已经到了3月份&#xff0c;在这樱花????盛开的季节&#xff0c;终于得重新连载该系列了。在停更的期间时不时会收到大家关于DDD的留言和问题&#xff0c;一旦…

滑动窗口最大值-leetcode 239题

给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;htt…

一文读懂 Copyleft 开源许可证

开源组件已改变了我们开发软件的方式。来自开源社区的现成库&#xff08;ready-made libraries&#xff09;使忙碌的开发者们能专注于他们的秘密武器&#xff0c;这些秘密武器或将成为未来令人兴奋的新软件产品。而且不需要付费。下载开源组件不需要你提供信用卡号码&#xff0…

常用决策树集成模型Random Forest、Adaboost、GBDT详解

常用的集成学习策略 在之前的文章我有介绍过常用的基本决策树模型ID3、C4.5、CART算法&#xff0c;其中提到了一个关于基本决策树模型的缺点&#xff0c;那就是决策树模型学习一棵最优的决策树被认为是NP-Complete问题。实际中的决策树是基于启发式的贪心算法建立的&#xff0…

开源网站云查杀方案,搭建自己的云杀毒。

最近公司的一个客户被勒索病毒攻击了&#xff0c;可悲的是&#xff0c;客户的文件附件太多而且大&#xff0c;没有做双机热备的功能。当客户发现病毒后&#xff0c;还第一时间格式化了服务器。那叫一个惨&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;初步分析…