升级

安装最新的 Global Alauda 服务网格 Essentials 集群插件

请访问 Alauda AI Essentials 以获取安装说明。

升级业务集群组件

升级前须知

该平台为服务网格中的 Istio 提供了金丝雀升级,首先部署新版本的 istiod 组件。一旦所有数据平面升级完成,旧版本的 istiod 组件将被淘汰。

考虑到 Istio 版本与 Kubernetes 版本之间的强依赖关系,确保集群当前的 Kubernetes 版本满足 Istio 升级要求,以成功完成金丝雀升级。

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

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

注意

  • 表格仅描述 Istio 和 Kubernetes 的主要版本;次要版本不影响兼容性。
  • 您可以通过访问 组件 列表查看集群中当前运行的 Istio 和 Kubernetes 版本。
  • 如果集群当前的 Kubernetes 版本低于 Istio 升级所需版本,则需要通过 升级组件 升级 Kubernetes 至兼容版本。
  • 有关更多信息,请参阅 社区支持的 Kubernetes 版本针对 Istio

升级过程

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

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

升级操作

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

  1. 平台管理 左侧导航中,点击 服务网格 > 网格
  2. 点击需要升级的 服务网格名称 以进入网格详情。
  3. 在网格详情的 网格部署 区域,有一个服务网格已部署的集群列表。点击 集群名称 以在新标签中打开集群详情页面。
  4. 切换到集群详情页面中的 组件,点击升级以将集群中服务网格的非 Istio 组件升级到最新版本。关于升级组件的详细文档,请参见 升级组件

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

部署新版本的 istiod

注意:在部署新版本的 istiod 之前,请参考 升级前须知 以确保集群的 Kubernetes 版本满足升级路径要求。

  1. 返回网格详情页面,在 网格部署 区域,点击对应集群的 Istio 版本 右侧的 升级 按钮。弹出窗口将显示 Istio 的升级路径。
  2. 在弹出窗口中点击 升级 按钮。

检查集群中是否存在 EnvoyFilters

  1. 平台管理 左侧导航中,点击 服务网格 > EnvoyFilter

    注意:如果平台上存在多个服务网格,您可以通过顶部导航栏切换到集群所在的服务网格。

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

    • 如果未找到数据,则检查完成。
    • 如果找到数据,请联系 EnvoyFilter 创建者以将所有 EnvoyFilters 迁移到新版本的 Istio,或联系技术支持。

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

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

方法 1:使用交互式命令行工具升级

交互式命令行工具可以批量升级集群中的所有 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 网关的滚动升级过程涉及先删除旧 Pods,然后创建新 Pods,直到所有 Pods 更新到数据平面镜像的新版本。因此,如果网关只有一个 Pod,在网关升级期间将无法访问。

方法 2:通过 UI 升级

通过 UI 升级允许按不同名称空间批量升级或指定单个服务/网关进行升级。此方法适合于喜欢在可视界面下操作的用户,尤其是那些需要灵活选择升级目标的用户。

升级 Ingress 和 Egress 网关

  1. 在左侧导航栏中点击 服务网格 > 网关注意:在集群的网关列表中,Istio 版本 右侧的 图标表示网关的数据平面代理可以升级。
  2. 点击 Istio 版本 右侧的 升级 按钮,确认即可。

升级 Sidecars

  1. 平台管理 左侧导航中,点击 服务网格 > 网格
  2. 点击需要升级 Sidecars 的 服务网格名称 以进入网格详情。
  3. 在网格详情的 名称空间 区域,有一个服务网格管理的名称空间列表。点击 名称空间名称 以在新标签中打开 服务网格,并进入 Sidecar 所在的名称空间。 注意:对所有名称空间依次进行 Sidecar 升级。
  4. 在左侧导航栏中点击 服务列表注意:当 服务名称 旁边出现 图标时,表示该服务的 Sidecar 可以升级。
  5. 点击 批量升级 Sidecars注意:点击 图标右侧的 升级 按钮可升级单个服务。
  6. 选择所有、一个或多个服务,然后点击 升级注意:平台将通过对 Pods 进行滚动更新,以不同的当前版本和目标版本升级服务的 Sidecar。如果升级失败,请检查容器平台中的容器组事件以了解失败原因,或尝试 重新升级

注意:该服务的 Sidecar 通过对服务的 Deployment 进行滚动更新来完成 Pod 的数据平面镜像更新。因此,如果服务有长连接,Pods 的滚动更新期间会出现短暂的服务中断。

在集群中淘汰旧版本的 istiod

集群中的旧版本 istiod 只能在所有 Istio 数据平面升级完成后进行淘汰。

注意

  • 如果集群中的旧版本 istiod 未被淘汰,您将无法使用服务网格的添加集群和 Sidecar 配置功能。
  • 当平台上有新可升级版本时,如果任何集群未淘汰旧版本 istiod,平台将无法升级。
  • 在多集群服务网格中,集群中的旧版本 istiod 只能在所有集群完成 Istio 数据平面升级后依次进行淘汰。

步骤

  1. 返回网格详情页面,在 网格部署 区域,点击对应集群 Istio 版本 右侧的 淘汰旧版本 按钮。将显示 淘汰旧版本 弹出窗口。
  2. 点击弹出窗口中的 确认 按钮。

注意:如果集群中有未升级的数据平面,在点击 淘汰旧版本 后,弹出窗口将显示集群中未升级的 ingress gateways、egress gateways 和 Sidecars,快速追踪需要升级的数据平面。