前言
Istio 1.10
是 Istio 在 2021 年发布的第二个版本,和过去几个版本一样,Istio 团队继续为 Istio 用户改善 Day 2 operations。该版本的一些亮点如下:
注:
Istio 1.10
官方支持 Kubernetes 版本1.18.0
到1.21.x
。
以下是此版本的一些要点:
发现选择器(Discovery Selectors)
在以前的 Istio 版本中,Istio 的控制平面一直在观察和处理集群中它所关心的所有 Kubernetes 资源的更新。这在大型集群或配置快速变化的集群中可能是一个可扩展性瓶颈。发现选择器(Discovery Selector)限制了 Istiod 监视的资源集,所以你可以很容易地忽略那些与网格无关的命名空间的变化(例如一组 Spark Job)。
你可以认为它们有点像 Istio 的 Sidecar API 资源,但对于 Istiod 本身来说:Sidecar 资源限制了 Istiod 将发送至 Envoy 的配置集。发现选择器限制了 Istio 从 Kubernetes 接收和处理的配置集。
请看 Lin、Christian 和 Harvey 的精彩文章,深入了解这项新功能的情况。
稳定的修订版标签
早在 1.6 版本中,Istio 就增加了对安全部署多个控制平面的支持,并且我们一直在稳步提高支持度。关于修订版的一个主要的可用性抱怨是需要大量的命名空间重新标记来改变修订版(revision),因为一个标签(label)直接映射到一个特定的 Istio 控制平面部署。
有了修订版标签,现在有了一个间接层:你可以创建像 canary 和 prod 这样的标签,把使用这些标签的命名空间标记为修订版(即 istio.io/rev=prod
),并把特定的 Istiod 修订版与该标签联系起来。
例如,假设你有两个修订版,1-7-6
和 1-8-0
。你创建一个指向 1-7-6
版本的修订标签 prod
,并创建一个指向较新的 1-8-0
版本的修订标签 canary
。
命名空间 A 和 B 指向 1-7-6
,命名空间 C 指向 1-8-0
。
现在,当你准备将 1-8-0
修订版从 canary
推到 prod
时,你可以将 prod
标签与 1-8-0
Istiod 修订版重新关联。现在,所有使用 istio.io/rev=prod
的命名空间将使用较新的 1-8-0
版本进行注入。
命名空间 A、B 和 C 指向 1-8-0
请查看更新后的 Canary 升级指南。
Sidecar 网络变化
在以前的 Istio 版本中,Istio 已经重写了 pod 网络,从 eth0
捕获流量,并将其发送到 lo
上的应用程序。大多数应用程序都绑定了这两个接口,并没有注意到任何区别;但有些应用程序被特别编写为只期望在其中一个接口上获得特定的流量(例如,通常只在 lo
上暴露管理端点,而从不通过 eth0
,或者有状态的应用程序只绑定 eth0
)。这些应用程序的行为可能会受到 Istio 引导流量进入 pod 的影响。
在 1.10 版本中,Istio 正在更新 Envoy,默认在 eth0
而不是 lo
上向应用程序发送流量。对于新用户来说,这应该只是一个改进。对于现有的用户, istioctl experimental precheck
将识别出监听 localhost
的 pod
,并可能受到影响,如 IST0143。
请参阅 John Howard 的文章,以更深入地了解这一变化,如何以及为什么它可能会影响你,以及如何实现无缝迁移。
Istio.io 改版
我们对 Istio.io 进行了改造,采用了全新的外观!这是 Istio 项目启动近四年以来,网站的第一个重大变化(我们将在 5 月 24 日,北京时间 5 月 25 日,庆祝这个周年纪念日!)。我们希望这些变化有助于使网站更方便用户,更容易浏览,总体上更有可读性。
这项工作由 Google Cloud 赞助,我们要特别感谢 Craig Box、Aizhamal Nurmamat kyzy 和 Srinath Padmanabhan 推动这项工作,并感谢所有帮助审查和提供早期修订反馈的人们。
请在 istio.io 仓库 上提交问题,给我们任何反馈。
开放设计文件
从 2021 年 5 月 20 日开始,Istio 的设计和规划文件将向互联网上的所有人开放,无需登录。此前,查看这些文件需要谷歌登录和群组成员资格。这一变化将使技术文件的分享更容易、更开放。文件将保持在与以前相同的 URL,但 Community Drive 及其文件夹将改变位置。我们将在本周内联系所有的贡献者和 Drive 成员,并告知新的细节。
弃用
在 1.10 版本中,有两个功能将被废弃。
- Kubernetes 第一方 JWT 支持(
values.global.jwtPolicy=first-party-jwt
)将被删除;它的安全性较低,仅用于向后兼容旧版 Kubernetes。 values.global.arch
选项已经被 Kubernetes 配置中的 Affinity 设置所取代。
请参阅 1.10 变更说明以了解这些废弃的详细情况。
反馈
如果你已经将你的服务网格升级到 Istio 1.10,我们想听听你的意见!请考虑参加这个简短的(约 2 分钟)调查,以帮助我们了解我们在哪些方面做得好,以及在哪些方面还需要改进。
延伸阅读
- Istio 1.19 Gateway API 服务网格支持
- Istio 1.18 环境网格(Ambient Mesh)问世
- Istio 1.17 注重生产实践的版本
- Istio 1.16 Beta Alpha Experimental 中间版本
- Istio 引入 Ambient Mesh(无 sidecar 数据平面模式),让服务网格真正成为通信基础设施
- Istio 1.15 平台支持(arm64),天下大同
- Istio 1.14 逐步产品化,未来可期
- Istio 1.13 星光点点
- Istio 1.12 Alpha 惊喜,Release 平淡
- Istio 1.11 Beta 惊喜,Release 平淡
- Istio 1.10 全新官网&开放前行
- Istio 1.9 改善生产环境体验
- Istio 1.8 稳健前进
- Istio 1.7 任性的小子
- Istio 1.6 简化以提升用户体验
- Istio 1.5 拥抱单体,简化架构