升级
目录
安装最新的 Global Alauda Service Mesh Essentials 集群插件升级业务集群组件升级前升级流程升级操作升级集群中的非 Istio 服务网格组件部署新版本的 istiod检查集群中是否存在 EnvoyFilter升级集群中的所有 Istio 数据平面下线集群中旧版本的 istiod安装最新的 Global Alauda Service Mesh Essentials 集群插件
请访问 Alauda Service Mesh Essentials 查看安装说明。
升级业务集群组件
升级前
平台为服务网格中的 Istio 提供金丝雀升级,会先部署新版本的 istiod 组件。待所有数据平面升级完成后,再下线旧版本的 istiod 组件。
鉴于 Istio 版本与 Kubernetes 版本之间存在强依赖关系,在升级 Istio 之前,请确保集群当前的 Kubernetes 版本满足 Istio 的升级要求,以顺利完成金丝雀升级。
下表展示了当前平台版本支持的 Istio 升级路径,以及这些路径所要求的 Kubernetes 版本。
注意:
- 该表仅描述 Istio 和 Kubernetes 的主版本;小版本不会影响兼容性。
- 你可以通过进入 组件 列表,查看集群中当前运行的 Istio 和 Kubernetes 版本。
- 如果集群当前的 Kubernetes 版本低于 Istio 升级所需版本,则需要通过 Upgrade Components 将 Kubernetes 升级到兼容版本。
- 有关更多信息,请参阅 Community 的 Istio 支持的 Kubernetes 版本。
升级流程
完整的服务网格升级流程包括以下步骤:
- 升级集群中非 Istio 的服务网格组件,例如 asm operator、flagger operator 等。
- 在集群中部署新版本的 istiod。
- 检查集群中是否存在 EnvoyFilter。
- 升级集群中的所有 Istio 数据平面。
- 下线集群中旧版本的 istiod。
升级操作
升级集群中的非 Istio 服务网格组件
- 在左侧导航的 平台管理 中,单击 服务网格 > 网格。
- 单击需要升级的
Service Mesh Name,进入网格详情页。 - 在网格详情页的 网格部署 区域,会显示已部署服务网格的集群列表。单击
Cluster Name,在新标签页中打开集群详情页。 - 切换到集群详情页中的 组件,然后单击升级,将集群中的非 Istio 服务网格组件升级到最新版本。有关升级组件的详细文档,请参阅 Upgrade Components。
注意:服务网格中的非 Istio 组件包括 asm、Flagger Operator、Asm Operator、Jaeger Operator。
部署新版本的 istiod
注意:在部署新版本的 istiod 之前,请先参考 升级前,确保集群的 Kubernetes 版本满足升级路径要求。
- 返回网格详情页,在 网格部署 区域,单击对应集群的
Istio Version右侧的 升级 按钮。弹窗中会显示 Istio 的升级路径。 - 单击弹窗中的 升级 按钮。
检查集群中是否存在 EnvoyFilter
-
在左侧导航的 平台管理 中,单击 服务网格 > EnvoyFilter。
注意:如果平台上存在多个服务网格,可以通过顶部导航栏将服务网格切换到集群所在的服务网格。
-
检查 EnvoyFilter 列表中是否有数据。
- 如果没有查到数据,则检查完成。
- 如果查到数据,请联系 EnvoyFilter 创建者,将所有 EnvoyFilter 适配到新版本的 Istio,或者联系技术支持。
升级集群中的所有 Istio 数据平面
集群中的 Istio 数据平面包括 Sidecar、ingress gateways 和 egress gateways。
方法 1:通过交互式命令行工具升级
交互式命令行工具可以批量升级集群中的所有 Sidecar 和网关。此方法适合熟悉命令行操作的用户,尤其适合需要一次性快速升级整个集群的场景。
注意:你也可以使用免确认的快速升级参数来执行升级。
注意:ingress 和 egress gateways 的滚动升级过程会先删除旧 Pods,再创建新 Pods,直到所有 Pods 都更新为新的数据平面镜像版本。因此,如果网关只有一个 Pod,则在网关升级期间将不可访问。
方法 2:通过 UI 升级
通过 UI 升级,可以按不同命名空间批量升级,也可以指定单个服务/网关进行升级。此方法适合偏好使用可视化界面操作的用户,尤其适合需要灵活选择升级目标的场景。
升级 ingress 和 egress gateways
- 在左侧导航栏中,单击 服务网格 > 网关。
注意:在集群的网关列表中,Istio Version 右侧的
图标表示该网关的数据平面代理可以升级。 - 单击 Istio Version 右侧的 升级 按钮,并 确认。
升级 Sidecar
- 在左侧导航的 平台管理 中,单击 服务网格 > 网格。
- 单击需要升级 Sidecar 的
Service Mesh Name,进入网格详情页。 - 在网格详情页的 命名空间 区域,会显示由服务网格管理的命名空间列表。单击
Namespace Name,在新标签页中打开 服务网格,进入 Sidecar 所在的命名空间。 注意:请依次对所有命名空间执行 Sidecar 升级。 - 在左侧导航栏中,单击 服务列表。
注意:当
Service Name右侧出现
图标时,表示该服务的 Sidecar 可以升级。 - 单击 批量升级 Sidecar。
注意:如果要升级单个服务,请单击服务记录中
图标右侧的 升级 按钮。 - 选择全部、一个或多个服务,然后单击 升级。 注意:平台会通过滚动更新不同当前版本和目标版本的 Pods 来升级服务的 Sidecar。如果升级失败,请查看 Container Platform 中的容器组事件以了解失败原因,或者尝试 重新升级。
注意:Sidecar 通过服务的 Deployment 的滚动更新来完成 Pod 的数据平面镜像更新。因此,如果服务存在长连接,在 Pod 滚动更新期间会有短暂的服务中断。
下线集群中旧版本的 istiod
只有在集群中所有 Istio 数据平面升级完成后,才能下线集群中的旧版本 istiod。
注意事项:
- 如果集群中旧版本的 istiod 未下线,则无法使用服务网格的添加集群和 Sidecar 配置功能。
- 当平台上存在新的可升级版本时,只要有任一集群尚未下线旧版本 istiod,平台就无法升级。
- 在多集群服务网格中,只有在所有集群都完成 Istio 数据平面升级后,才能依次下线各集群中的旧版本 istiod。
步骤
- 返回网格详情页,在 网格部署 区域,单击对应集群的
Istio Version右侧的 下线旧版本 按钮。此时会显示 下线旧版本 弹窗。 - 单击弹窗中的 确认 按钮。
注意:如果集群中仍有未升级的数据平面,单击 下线旧版本 后,弹窗会显示集群中尚未升级的 ingress gateways、egress gateways 和 Sidecars,便于快速定位待升级的数据平面。