更新 ambient 模式组件
本页介绍如何在 ambient 模式下更新 Istio 控制平面、Istio CNI 插件和 ZTunnel 代理。这三个组件都使用 InPlace 更新策略,并且必须严格按照此顺序更新。控制平面更新后,Waypoint proxy 会自动滚动更新;相关验证步骤请参见 Updating waypoint proxies。
目录
使用特定版本安装 ambient 模式操作步骤更新组件前提条件更新 Istio 控制平面更新 Istio CNI 插件更新 ZTunnel 代理验证 ambient 工作负载从开发环境中移除更新资源使用特定版本安装 ambient 模式
你可以在 ambient 模式下显式指定版本来安装 Istio 控制平面、Istio CNI 插件和 ZTunnel 代理,这样后续就可以执行更新操作。
本节的目的是让你能够从一个已知的起始版本开始完成更新流程。如果集群已经在 ambient 模式下运行 Istio,则可跳过本节。安装步骤与 Installing Istio ambient mode 相同,只是每个资源都将 spec.version 固定为较早的版本。
操作步骤
-
创建
istio-cni、istio-system和ztunnel命名空间,并分别添加istio-discovery=enabled标签,以便控制平面能够发现它们: -
使用起始版本创建
IstioCNI资源:- 固定
spec.version定义了更新操作开始时的版本。 reconcileIptablesOnStartup选项使 CNI agent 在重新启动时能够检测并修复已运行的 ambient pod 中不兼容的 iptables 规则——这正是升级时会出现的情况。
- 固定
-
等待 Istio CNI pod 变为就绪:
-
使用相同的起始版本创建
Istio资源:InPlace是默认策略,因此此字段是可选的;这里显示它是为了显式说明策略。ambient 模式不支持其他策略。
-
等待 Istio 控制平面变为就绪:
-
使用相同的起始版本创建
ZTunnel资源:- 与安装指南不同,此示例设置了
spec.version,以便下面的 ZTunnel 更新步骤有一个较早的版本可供切换。
- 与安装指南不同,此示例设置了
-
等待 ZTunnel pod 变为就绪:
-
在集群中设置应用工作负载。例如,你可以将 Bookinfo 示例应用部署到
bookinfo命名空间。以下步骤是 Deploying the Bookinfo application in ambient mode 的简化版本。a. 创建
bookinfo命名空间,并添加istio-discovery=enabled标签,以便控制平面能够发现它:b. 部署 Bookinfo 应用:
c. 部署 Bookinfo 应用的按版本服务:
d. 将该命名空间中的所有工作负载纳入 ambient mesh:
更新组件
前提条件
- 你已使用 cluster-admin 身份登录 Alauda Container Platform Web 控制台。
- 你已安装 Alauda Container Platform Networking for Multus 插件,并且 kube-ovn 必须为 v4.1.5 或更高版本。
- 你已将 Alauda Service Mesh Operator 升级到 2.1.2 或更高版本,并且 Operator 中可用新的目标版本。更多信息,请参见 Understanding Operator updates and channels。
- Istio 已部署在 ambient 模式下。在此示例中,
Istio、IstioCNI和ZTunnel资源都命名为default。 - 你已在本地计算机上安装
istioctl。 - 应用工作负载已纳入 ambient mesh。在此示例中,Bookinfo 应用运行在
bookinfo命名空间中;请参见 Deploying the Bookinfo application in ambient mode。
更新 Istio 控制平面
-
更改
Istio资源中的版本。例如,要更新到 Istio1.28.6,请运行以下命令将spec.version字段设置为v1.28.6:Operator 会将正在运行的控制平面替换为新版本。ZTunnel 和任何 waypoint proxy 会自动重新连接到新的 istiod 实例;应用 pod 会继续运行,无需重启。
-
等待控制平面变为就绪:
-
确认控制平面报告的是新版本:
示例输出
更新 Istio CNI 插件
仅在控制平面更新完成后再更新 Istio CNI 插件,因为 1.x 版本的 CNI 插件支持 1.x 或 1.x+1 版本的控制平面。
-
将
IstioCNI资源的spec.version字段设置为与控制平面相同的版本: -
观察
istio-cni-nodeDaemonSet 的滚动更新: -
等待
IstioCNI资源报告就绪: -
确认 CNI 插件报告的是新版本:
示例输出
有关 IstioCNI 资源及其更新行为的详细信息,请参见 The Istio CNI update process。
更新 ZTunnel 代理
最后更新 ZTunnel 代理,前提是控制平面和 CNI 插件都已运行新版本。
替换 ZTunnel pod 可能会重置该节点上的长连接 TCP 连接。如果你的工作负载持有长连接,请在执行此步骤前查看 The ZTunnel update process,并选择合适的缓解措施。
-
将
ZTunnel资源的spec.version字段设置为与控制平面相同的版本: -
观察 ZTunnel DaemonSet 的滚动更新:
NOTEDaemonSet 会逐个节点替换 ZTunnel pod,以保持 mesh 连接可用,因此在较大的集群中,滚动更新可能需要几分钟。
-
等待
ZTunnel资源报告就绪: -
确认 ZTunnel 代理报告的是新版本:
示例输出
-
检查按节点划分的 ZTunnel pod:
示例输出
验证 ambient 工作负载
当所有组件都运行新版本后,请确认这些工作负载仍然参与 mesh。
-
检查应用 pod 是否正在运行:
示例输出
-
确认 ZTunnel 仍然在代理这些工作负载。纳入 ambient mesh 的 pod 会报告
HBONE协议:示例输出
-
通过从另一个 pod 调用服务来测试 mesh 内连通性:
示例输出
如果你部署了 waypoint proxy,还需要按照 Updating waypoint proxies 中的说明对其进行额外验证。
从开发环境中移除更新资源
在开发环境中完成更新流程验证后,请移除示例应用和 mesh 组件,以释放资源: