升级

目录

安装最新的 Global Alauda Service Mesh Essentials 集群插件

请访问 Alauda Service Mesh Essentials 获取安装说明。

升级业务集群组件

升级前准备

平台为服务网格中的 Istio 提供了金丝雀升级方案,先部署新版本的 istiod 组件,待所有数据平面升级完成后,再退役旧版本的 istiod 组件。

鉴于 Istio 版本与 Kubernetes 版本之间存在较强的依赖关系,升级 Istio 前请确保集群当前的 Kubernetes 版本满足 Istio 升级要求,以保证金丝雀升级成功完成。

下表展示了当前平台版本支持的 Istio 升级路径及对应路径所需的 Kubernetes 版本。

支持的 Istio 升级路径Kubernetes 版本要求
Istio 从 1.20 升级到 1.22Kubernetes 版本 1.271.28
Istio 从 1.18 升级到 1.22Kubernetes 版本 1.27

注意

  • 表中仅描述了 Istio 和 Kubernetes 的主版本号,次版本号不影响兼容性。
  • 可通过进入 Components 列表查看集群当前运行的 Istio 和 Kubernetes 版本。
  • 若集群当前 Kubernetes 版本低于 Istio 升级所需版本,则需通过 Upgrade Components 升级 Kubernetes 至兼容版本。
  • 更多信息请参考 Community 支持的 Istio Kubernetes 版本

升级流程

完整的服务网格升级流程包括以下步骤:

  1. 升级集群中服务网格的非 Istio 组件,如 asm operator、flagger operator 等。
  2. 在集群中部署新版本的 istiod
  3. 检查集群中是否存在 EnvoyFilters
  4. 升级集群中所有 Istio 数据平面
  5. 退役集群中旧版本的 istiod

升级操作

升级集群中服务网格的非 Istio 组件

  1. 平台管理 左侧导航中,点击 Service Mesh > Meshes
  2. 点击需要升级的 Service Mesh Name 进入网格详情。
  3. 在网格详情的 Mesh Deployment 区域,列出了服务网格已部署的集群列表。点击对应的 Cluster Name,在新标签页打开集群详情页面。
  4. 切换到集群详情页的 Components,点击升级按钮,将集群中服务网格的非 Istio 组件升级到最新版本。详细升级组件文档请参见 Upgrade Components

注意:服务网格的非 Istio 组件包括 asm、Flagger Operator、Asm Operator、Jaeger Operator。

部署新版本的 istiod

注意:部署新版本 istiod 前,请参考 升级前准备 确保集群 Kubernetes 版本满足升级路径要求。

  1. 返回网格详情页,在 Mesh Deployment 区域,点击对应集群 Istio Version 右侧的 Upgrade 按钮,弹窗中会显示 Istio 的升级路径。
  2. 点击弹窗中的 Upgrade 按钮。

检查集群中是否存在 EnvoyFilters

  1. 平台管理 左侧导航中,点击 Service Mesh > EnvoyFilter

    注意:若平台存在多个服务网格,可通过顶部导航栏切换至集群所在的服务网格。

  2. 检查 EnvoyFilter 列表中是否有数据。

    • 若无数据,检查完成。
    • 若有数据,请联系 EnvoyFilter 创建者适配所有 EnvoyFilters 至新版本 Istio,或联系技术支持。

升级集群中所有 Istio 数据平面

集群中的 Istio 数据平面包括 Sidecars、ingress gateways 和 egress gateways。

方法一:通过交互式命令行工具升级

交互式命令行工具可批量升级集群中所有 Sidecars 和网关。适合熟悉命令行操作的用户,尤其是需要一次性快速升级整个集群的场景。

kubectl -ncpaas-system exec -it deploy/asm-controller -- /app/asm-controller bfg rollout

注意:也可使用无确认的快速升级参数执行升级。

kubectl -ncpaas-system exec -it deploy/asm-controller -- /app/asm-controller bfg rollout --no-prompt

注意:ingress 和 egress gateways 的滚动升级过程是先删除旧 Pod,再创建新 Pod,直到所有 Pod 升级为新版本数据平面镜像。因此,若网关仅有一个 Pod,升级期间该网关将不可用。

方法二:通过 UI 升级

通过 UI 可按不同命名空间批量升级,或指定单个服务/网关升级。适合喜欢可视化操作的用户,尤其是需要灵活选择升级目标的场景。

升级 Ingress 和 Egress Gateways

  1. 在左侧导航栏点击 Service Mesh > Gateways注意:集群网关列表中,Istio Version 右侧的 图标表示该网关的数据平面代理可升级。
  2. 点击 Istio Version 右侧的 Upgrade 按钮,确认升级。

升级 Sidecars

  1. 平台管理 左侧导航中,点击 Service Mesh > Meshes
  2. 点击需要升级 Sidecars 的 Service Mesh Name 进入网格详情。
  3. 在网格详情的 Namespaces 区域,列出了服务网格管理的命名空间列表。点击对应的 Namespace Name,在新标签页打开该命名空间的 Service Mesh 页面,进入 Sidecar 所在命名空间。 注意:请依次对所有命名空间执行 Sidecar 升级。
  4. 在左侧导航栏点击 Service List注意:当 Service Name 旁出现 图标时,表示该服务的 Sidecar 可升级。
  5. 点击 Batch Upgrade Sidecars注意:点击服务记录中 图标右侧的 Upgrade 按钮可升级单个服务。
  6. 选择全部、单个或多个服务,点击 Upgrade注意:平台会通过滚动更新服务的 Deployment 来升级 Sidecar,更新 Pod 的数据平面镜像。若升级失败,请查看容器平台中的容器组事件,了解失败原因,或尝试 Re-upgrade

注意:Sidecar 是通过滚动更新服务的 Deployment 来完成 Pod 数据平面镜像的更新,因此若服务存在长连接,滚动更新 Pod 期间会有短暂的服务中断。

退役集群中旧版本的 istiod

集群中旧版本的 istiod 仅在所有 Istio 数据平面升级完成后才能退役。

注意事项

  • 若集群中旧版本 istiod 未退役,将无法使用服务网格的添加集群和 Sidecar 配置功能。
  • 当平台存在新可升级版本时,若任一集群未退役旧版本 istiod,平台无法升级。
  • 多集群服务网格中,所有集群完成 Istio 数据平面升级后,旧版本 istiod 才能按顺序退役。

操作步骤

  1. 返回网格详情页,在 Mesh Deployment 区域,点击对应集群 Istio Version 右侧的 Decommission Old Version 按钮,弹出 Decommission Old Version 窗口。
  2. 点击弹窗中的 Confirm 按钮。

注意:若集群中存在未升级的数据平面,点击 Decommission Old Version 后,弹窗会显示集群中未升级的 ingress gateways、egress gateways 和 Sidecars,方便快速定位待升级的数据平面。