InPlace
更新策略一次只运行一个版本的控制平面。在更新期间,所有工作负载会立即连接到新的控制平面版本。为了保持 sidecar 与控制平面的兼容性,您一次只能升级一个小版本。
InPlace
策略会在原地更新并重启现有的 Istio 控制平面。在此过程中,控制平面只有一个实例,无需将工作负载迁移到新的控制平面实例。完成更新后,需要重启应用工作负载和网关以刷新 Envoy 代理。
虽然 InPlace
策略简单高效,但如果工作负载 Pod 在控制平面重启时更新、重启或扩缩容,可能会导致应用流量短暂中断。您可以通过运行多个 Istio 控制平面(istiod)副本来降低此风险。
要选择 InPlace
策略,请将 Istio 资源中的 spec.updateStrategy.type
设置为 InPlace
。
选择 InPlace 更新策略的示例配置
您可以在创建资源时设置此值,也可以在创建后编辑。如果在创建后编辑,请在更新 Istio 控制平面之前完成更改。
您可以使用 InPlace
更新策略安装 Istio 控制平面、Istio CNI 以及 Bookinfo 示例应用。
您可以通过以下章节了解更新过程。如果集群中已部署 Istio,可以跳过此安装步骤。
操作步骤
运行以下命令创建 istio-system
命名空间:
将工作负载关联到使用 InPlace
策略部署的控制平面:
通过以下命令为命名空间打标签,以自动包含所有工作负载:
通过修改 Deployment
资源中的 Pod 模板,为单个工作负载应用修订标签。例如:
如果修订名称为 default
,通过运行以下命令将工作负载关联到该修订。以下示例为命名空间打上 istio-injection: enabled
标签。
使用 InPlace
更新策略部署 Istio 控制平面。以下示例配置在 istio-system
命名空间创建名为 default
的 Istio
资源:
示例配置
安装所需版本的 Istio CNI 插件。以下示例配置在 istio-cni
命名空间创建名为 default
的 IstioCNI
资源:
使用 InPlace
策略更新 Istio 时,版本只能一次递增一个小版本。若需跨越多个小版本更新,必须在每次更新后递增版本并重启工作负载。重启工作负载可确保 sidecar 与控制平面版本兼容。所有工作负载重启后,更新过程完成。
前提条件
istioctl
。InPlace
更新策略。本示例中,Istio
资源名为 default
,部署在 istio-system
命名空间。IstioCNI
资源名为 default
,部署在 istio-cni
命名空间。bookinfo
命名空间打标签以启用 sidecar 注入。bookinfo
命名空间。操作步骤
修改 Istio
资源中的版本。例如,要更新到 Istio 1.26.3
,运行以下命令将 spec.version
字段设置为 v1.26.3
:
Istio CR 中的版本更新
Service Mesh v2 Operator 会部署新的控制平面版本,替换旧版本。sidecar 会自动重新连接到新的控制平面。
运行以下命令确认新版本控制平面已就绪:
示例输出
运行以下命令重启应用工作负载,以注入新版本的 sidecar:
验证
通过以下命令验证新版本 sidecar 是否运行:
示例输出
VERSION
列应与新的控制平面版本一致。