Istio CNI 更新过程

Istio Container Network Interface (CNI) 的更新过程使用原地更新。当 IstioCNI 资源发生更改时,daemonset 会自动将现有的 istio-cni-node pod 替换为指定版本的 CNI 插件。

你可以使用以下字段来管理版本更新:

  • spec.version

    定义要安装的 CNI 插件版本。请以 vX.Y.Z 的格式指定该值,其中 X.Y.Z 表示所需版本。例如,使用 v1.28.6 安装版本为 1.28.6 的 CNI 插件。

要更新 CNI 插件,请将 spec.version 字段修改为目标版本。IstioCNI 资源还包含一个 values 字段,用于暴露 istio-cni chart 的配置选项。

当 mesh 运行在 ambient 模式下时,Istio CNI 组件负责流量重定向。如果你使用 RevisionBased 策略进行升级,同一个 CNI 组件会继续与之前的控制平面版本兼容,并在迁移期间为现有控制平面和新部署的控制平面持续重定向流量。

NOTE

Istio CNI 支持运行与其相同的 minor 版本的控制平面,或比其高一个 minor 版本的控制平面。

在完成 Istio 控制平面升级后,继续升级 Istio CNI 组件。Alauda Service Mesh v2 Operator 会推出新的 CNI 插件版本以替换之前的部署。随后,istio-cni-node DaemonSet 中的 pod 会通过滚动更新进行刷新,从而使流量重定向规则在整个升级窗口期间持续生效。

更新 Istio CNI 资源版本

你可以通过更改资源中的版本来更新 Istio CNI 资源版本。然后,Service Mesh v2 Operator 会部署新版本的 CNI 插件,以替换旧版本的 CNI 插件。istio-cni-node pod 会自动重新连接到新的 CNI 插件。

前提条件

  • 你已使用 cluster-admin 身份登录 Alauda Container Platform Web 控制台。
  • 你已安装 Alauda Service Mesh v2 Operator,并部署了 Istio。
  • 你已使用所需版本安装 Istio CNI 插件。在此示例中,名为 defaultIstioCNI 资源部署在 istio-cni 命名空间中。
  • 根据所选的更新策略,你已完成控制平面的准备:对于 InPlace 策略,Istio 控制平面已升级到目标版本;对于 RevisionBased 策略,已创建新的控制平面修订版本。

操作步骤

  1. 更改 Istio 资源中的版本。例如,要更新到 Istio 1.28.6,请通过运行以下命令将 spec.version 字段设置为 v1.28.6

    kubectl patch istiocni default --type='merge' -p '{"spec":{"version":"v1.28.6"}}'
  2. 通过运行以下命令,观察 istio-cni-node DaemonSet 滚动推出新版本:

    kubectl rollout status daemonset/istio-cni-node -n istio-cni
  3. 在滚动更新完成后,通过运行以下命令等待 IstioCNI 资源报告 Ready 状态:

    kubectl wait --for=condition=Ready istiocnis/default --timeout=5m
  4. 通过运行以下命令确认新版本的 CNI 插件已就绪:

    kubectl get istiocni default

    示例输出

    NAME      NAMESPACE   PROFILE   READY   STATUS    VERSION   AGE
    default   istio-cni             True    Healthy   v1.28.6   30m
  5. 通过运行以下命令检查生成的 CNI pod:

    kubectl get pods -n istio-cni

    示例输出

    NAME                   READY   STATUS    RESTARTS   AGE
    istio-cni-node-225z6   1/1     Running   0          2m
    istio-cni-node-97j9k   1/1     Running   0          2m
    istio-cni-node-c4fw6   1/1     Running   0          2m
    NOTE

    如果你采用 RevisionBased 策略,Istio CNI 组件可以同时与多个控制平面版本互操作。在迁移期间,该组件会继续为之前部署的控制平面和新部署的控制平面处理流量重定向。当控制平面运行的 minor 版本与 CNI 相同,或者最多高一个 minor 版本时,兼容性成立。