更新 Istio
请勿使用 istioctl 更新托管附加组件安装的 Istio 版本。 更新时,管理的 Istio 附加组件也包括 Istio 版本的更新。 Istio 的支持版本已通过 IBM Cloud 测试,并获准在 IBM Cloud Kubernetes Service 中使用。
准备工作
-
每次只能手动更新 Istio 附加组件的一个版本。 要更新 Istio 附加组件的两个或更多版本,可以重复手动更新过程,或者 卸载 附加组件,然后 安装 后续版本。
-
您无法将受管理的 Istio 附加组件恢复到以前的版本。 要恢复到较早的次版本,必须 卸载 附加组件,然后 安装 较早的版本。
-
当您将
istio-system命名空间中的 Istio 控制组件更新到最新的次版本时,可能会遇到干扰性变化。 查看次版本更新过程中发生的以下更改。- 随着控制平面 pod 的更新推出,pod 也会重新创建。 Istio 控制平面在更新完成后才能完全可用。
- Istio 数据平面在更新期间继续运行。 不过,服务网格中应用程序的部分流量可能会在短时间内中断。
istio-ingressgateway负载均衡器的外部 IP 地址在更新期间或更新后都不会更改。
更新至 Istio 附加组件的次要版本
开始之前:
查看适用于所有版本更新的 前提条件。
更新 Istio 附加组件的次版本:
-
查看可用的 Istio 附加版本。
ibmcloud ks addon-versions -
在 Istio 附加组件更改日志 中查看每个版本的更改。
-
更新 Istio 插件。
ibmcloud ks cluster addon update istio --version VERSION -c CLUSTER_NAME_OR_ID -
在继续之前,请确认更新已完成。
更新过程最多可能需要 20 分钟才能完成。
- 确保 Istio 附加组件的“健康状态”为
normal,“健康状况”为Addon Ready。 如果状态为updating,则更新尚未完成。
ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID ``` 2. 确保 `istio-system` 命名空间中的控制平面组件 pod 的 **STATUS** 为 `Running`。 ```sh {: pre} kubectl get pods -n istio-system ``` ```sh {: screen} NAME READY STATUS RESTARTS AGE istio-system istio-egressgateway-6d4667f999-gjh94 1/1 Running 0 61m istio-system istio-egressgateway-6d4667f999-txh56 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-b9xgp 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-xhkv6 1/1 Running 0 61m istio-system istiod-5b9b5bfbb7-jvcjz 1/1 Running 0 60m istio-system istiod-5b9b5bfbb7-khcht 1/1 Running 0 60m ``` - 确保 Istio 附加组件的“健康状态”为
更新 istioctl 客户机和侧柜
每当 Istio 受管理的附加组件更新时,请更新您的 istioctl 客户端和您应用程序的 Istio sidecars。
例如,附加组件的补丁版本可能会由 IBM Cloud Kubernetes Service 自动更新,您也可以 更新附加组件的次要版本。 无论哪种情况,都请更新 istioctl 客户机以及应用程序的现有 Istio 侧柜,以匹配附加组件的 Istio 版本。
-
获取您的
istioctl客户端以及 Istio 附加组件控制平面组件的版本信息。istioctl version --short=false示例输出
client version: version.BuildInfo{Version:"1.11.2"} pilot version: version.BuildInfo{Version:1.29.5} pilot version: version.BuildInfo{Version:1.29.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.29.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.29.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.29.5} data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.29.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.29.5} ... -
在输出中,将
client version(istioctl) 与 Istio 控制平面组件(如pilot version)的版本进行比较。 如果client version和控制平面组件版本不匹配:- 下载与控制平面组件版本相同的
istioctl客户端。
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.29.5 sh - ``` 2. 导航至 Istio 包目录。 ```sh {: pre} cd istio-1.29.5 ``` 3. Linux 和 用户:将 客户端添加到 系统变量中。macOS `istioctl` `PATH` ```sh {: pre} export PATH=$PWD/bin:$PATH ``` - 下载与控制平面组件版本相同的
-
在步骤 1 的输出中,比较每个数据平面 pod 的
pilot version和data plane version。- 如果
pilot version和data plane version匹配,则无需进一步更新。 - 如果
pilot version和data plane version不匹配,请重新启动运行旧版本的数据平面 pod 的部署。 pod 名称和命名空间以data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}的形式列在每个条目中。
kubectl rollout restart deployment <deployment> -n <namespace>在
addon-istio1.24 及更高版本中,如果您有自定义网关部署,您还需要负责更新它们,以获取更新的istio/proxyv2映像。 自定义网关显示在数据平面 pod 列表中,可以通过重新启动更新。 - 如果
从 Istio 附加组件的不支持版本升级
将 Istio 组件 更新到 IBM Cloud Kubernetes Service 支持的最新补丁版本。
addon-istio 1.26.8 该功能将于2026年8月10日停止支持。 在此日期之前,请更新至 IBM Cloud Kubernetes Service 所支持的 addon-istio 最新补丁版本 1.29。
addon-istio 1.29 该功能可在以下 版本中使用并受到支持:、和。IBM Cloud Kubernetes Service 1.33 1.34 1.35 若要从 1.26 升级至 1.29,请按照 《更新至 Istio 附加组件的小版本》中的 说明,依次完成所有小版本升级:从 1.26 升级至 1.27,从 1.27 升级至 1.28,以及从 1.28 升级至 1.29。