第 4 章 更新 Istio CNI
查看 Istio Container Network Interface (CNI)的更新过程。确保 CNI 插件在升级过程中与 OpenShift Service Mesh control plane 兼容。
4.1. 关于 Istio CNI 更新过程 复制链接链接已复制到粘贴板!
Istio Container Network Interface (CNI)更新过程使用 Inplace 更新。当 IstioCNI 资源更改时,daemonset 会自动将现有 istio-cni-node pod 替换为 CNI 插件的指定版本。
您可以使用以下字段管理版本更新:
spec.version-
定义要安装的 CNI 插件版本。以
vX.Y.Z格式指定值,其中X.Y.Z代表所需的版本。例如,使用v1.27.3安装 CNI 插件版本1.27.3。
要更新 CNI 插件,请使用目标版本更改 spec.version 字段。IstioCNI 资源还包含一个 values 字段,用于公开 istio-cni 图表中的配置选项。
在 ambient 模式中,Istio CNI 组件管理流量重定向。在基于 Revision 的升级过程中,组件与 control plane 的旧版本兼容,并在迁移过程中继续管理旧和新的 control plane 的流量重定向。
Istio CNI 与运行相同次版本或更高版本的 control plane 兼容。
更新 Istio control plane 后,更新 Istio CNI 组件。OpenShift Service Mesh Operator 部署 CNI 插件的新版本,替换现有的插件。istio-cni-node DaemonSet pod 使用滚动更新策略更新,确保流量重定向规则在整个更新过程中保持活跃状态。
4.1.1. 更新 Istio CNI 资源版本 复制链接链接已复制到粘贴板!
您可以通过更改资源中的版本来更新 Istio Container Network Interface (CNI)资源版本。然后,Service Mesh Operator 部署了一个 CNI 插件的新版本,该插件替换了 CNI 插件的旧版本。istio-cni-node pod 会自动重新连接到新的 CNI 插件。
先决条件
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform。 - 已安装 Red Hat OpenShift Service Mesh Operator 并部署了 Istio。
-
您已使用所需版本安装了 Istio CNI 插件。在以下示例中,名为
default的IstioCNI资源部署在istio-cni命名空间中。 -
您已将 Istio control plane 更新至所需的版本(用于
Inplace策略),或创建一个新的 control plane 修订版本(用于基于 Revision的策略)。
流程
更改
Istio资源中的版本。例如,要升级到 Istio1.27.3,请运行以下命令将spec.version字段设置为1.27.3:oc patch istiocni default -n istio-cni --type='merge' -p '{"spec":{"version":"v1.27.3"}}'$ oc patch istiocni default -n istio-cni --type='merge' -p '{"spec":{"version":"v1.27.3"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,等待
IstioCNIDaemonSet 在更新后进入Ready状态:oc wait --for=condition=Ready istiocnis/default --timeout=5m
$ oc wait --for=condition=Ready istiocnis/default --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令确认 CNI 插件的新版本已就绪:
oc get istiocni default
$ oc get istiocni defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您应该看到类似以下示例的输出:
NAME READY STATUS VERSION AGE default True Healthy v{istio-latest} 7d1hNAME READY STATUS VERSION AGE default True Healthy v{istio-latest} 7d1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查 pod 的状态:
oc get pods -n istio-cni
$ oc get pods -n istio-cniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您应该看到类似以下示例的输出:
NAME READY STATUS RESTARTS AGE istio-cni-node-abc12 1/1 Running 0 3m istio-cni-node-def34 1/1 Running 0 3m istio-cni-node-ghi56 1/1 Running 0 3m
NAME READY STATUS RESTARTS AGE istio-cni-node-abc12 1/1 Running 0 3m istio-cni-node-def34 1/1 Running 0 3m istio-cni-node-ghi56 1/1 Running 0 3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当您使用 RevisionBased 策略时,Istio CNI 组件会与很多 control plane 版本兼容。它继续管理整个迁移中旧和新的 control plane 的流量重定向。Istio CNI 与运行相同次版本或更高版本的 control plane 兼容。