1.5. 关于 InPlace 策略


InPlace 更新策略一次只运行一个 control plane 的修订版本。在更新过程中,所有工作负载都会立即连接到新的 control plane 版本。要保持 sidecar 和 control plane 之间的兼容性,您可以一次只升级一个次版本。

InPlace 策略会更新并重启现有的 Istio control plane。在此过程中,只有一个 control plane 实例,无需将工作负载移到新的 control plane 实例中。要完成更新,重启应用程序工作负载和网关来刷新 Envoy 代理。

虽然 InPlace 策略提供了简单性和效率,但如果工作负载 pod 更新、重启或扩展,在重启 control plane 时,应用程序流量可能会中断。您可以通过运行 Istio control plane (istiod)的多个副本来降低这个风险。

1.5.1. 选择 InPlace 策略

要选择 InPlace 策略,将 Istio 资源中的 spec.updateStrategy.type 值设置为 InPlace

选择 InPlace 更新策略的规格示例

kind: Istio
spec:
  updateStrategy:
    type: InPlace
Copy to Clipboard Toggle word wrap

您可以在创建资源时设置这个值,或稍后编辑它。如果在创建后编辑资源,请在更新 Istio control plane 前进行更改。

以高可用性模式运行 Istio 资源,以最大程度降低流量中断需要额外的属性设置。如需更多信息,请参阅"About Istio 高可用性"。

1.5.2. 使用 InPlace 更新策略安装

您可以使用 Inplace 更新策略安装 Istio control plane、Istio CNI 和 Bookinfo 演示应用程序。

注意

如果集群已经包含 Istio 部署,您可以跳过此安装过程。

使用 InPlace 策略时,由 OpenShift Service Mesh Operator 创建的 IstioRevision 资源总是使用与 Istio 资源相同的名称。

流程

  1. 运行以下命令来创建 istio-system 命名空间:

    $ oc create ns istio-system
    Copy to Clipboard Toggle word wrap
  2. 使用 InPlace 策略将工作负载附加到部署的 control plane 中:

    1. 输入以下命令标记命名空间来自动包括所有工作负载:

      $ oc label namespace <namespace_name> istio.io/rev=<revision_name>
      Copy to Clipboard Toggle word wrap
    2. 通过修改 Deployment 资源中的 pod 模板,将修订标签应用到单独的工作负载。例如:

      apiVersion: apps/v1
      kind: Deployment
      spec:
        template:
          metadata:
            labels:
              istio.io/rev: <revision_name>
      Copy to Clipboard Toggle word wrap
  3. 如果修订 名称为,请运行以下命令将工作负载附加到修订版本。以下示例使用 istio-injection: enabled 标签标记命名空间。

    $ oc label namespace <namespace_name> istio-injection=enabled
    Copy to Clipboard Toggle word wrap
  4. 使用 InPlace 更新策略部署 Istio control plane。以下示例配置在 istio-system 命名空间中创建一个名为 defaultIstio 资源:

    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      namespace: istio-system
      version: v1.24.3
      updateStrategy:
        type: InPlace
    Copy to Clipboard Toggle word wrap
  5. 使用所需版本安装 Istio CNI 插件。以下示例配置在 istio-cni 命名空间中创建一个名为 defaultIstioCNI 资源:

    apiVersion: sailoperator.io/v1
    kind: IstioCNI
    metadata:
      name: default
    spec:
      version: v1.24.3
      namespace: istio-cni
    Copy to Clipboard Toggle word wrap
  6. 配置应用程序工作负载以在集群中运行。以下示例在 bookinfo 命名空间中部署 info 应用程序。

    1. 运行以下命令来创建 info 命名空间:

      $ oc create ns info
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令,标记 info 命名空间以启用 sidecar 注入:

      $ oc label namespace info istio-injection=enabled
      Copy to Clipboard Toggle word wrap
    3. 运行以下命令,在 bookinfo 命名空间中安装 info pod:

      $ oc apply -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/info/platform/kube/bookinfo.yaml -n bookinfo
      Copy to Clipboard Toggle word wrap
  7. 运行以下命令来查看 Istio 资源:

    $ oc get istio -n istio-system
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME      REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    default   1           1       1        default           Healthy   v1.24.3   115s
    Copy to Clipboard Toggle word wrap

    IN USE 字段显示 1,因为 namespace 标签和注入的代理都引用 IstioRevision 资源。

1.5.3. 使用 InPlace 策略更新 Istio control plane

当使用 InPlace 策略更新 Istio 时,您可以一次只增加一个次版本。要按多个次版本更新,您必须递增版本,并在每次更新后重启工作负载。重启工作负载可确保 sidecar 和 control plane 版本间的兼容性。重启所有工作负载后,更新过程已完成。

先决条件

  • 以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform。
  • 已安装 Red Hat OpenShift Service Mesh Operator 并部署了 Istio。
  • 您已在本地机器上安装了 istioctl
  • 您已将 Istio control plane 配置为使用 InPlace 更新策略。在本例中,名为 defaultIstio 资源部署在 istio-system 命名空间中。
  • 您已使用所需版本安装了 Istio CNI 插件。在本例中,名为 defaultIstioCNI 资源部署在 istio-cni 命名空间中。
  • 您已标记了 info 命名空间以启用 sidecar 注入。
  • 已在集群中运行应用程序工作负载。在本例中,info 应用程序部署在 bookinfo 命名空间中。

流程

  1. 更改 Istio 资源中的版本。例如,要升级到 Istio 1.24.4,请运行以下命令将 spec.version 字段设置为 v1.24.4

    $ oc patch istio default --type='merge' -p '{"spec":{"version":"v1.24.4"}}'
    Copy to Clipboard Toggle word wrap

    Istio CR 中的版本更新

    kind: Istio
    spec:
      version: v1.24.4
      updateStrategy:
        type: InPlace
    Copy to Clipboard Toggle word wrap

    Service Mesh Operator 部署了一个 control plane 的新版本,它替换了 control plane 的旧版本。sidecar 会自动重新连接到新的 control plane。

  2. 运行以下命令确认 control plane 的新版本已就绪:

    $ oc get istio
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME      REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    default   1           1       1        default           Healthy   v1.24.4   4m50s
    Copy to Clipboard Toggle word wrap

  3. 运行以下命令重启应用程序工作负载,以便注入新版本的 sidecar:

    $ oc rollout restart deployment -n info
    Copy to Clipboard Toggle word wrap

验证

  1. 输入以下命令验证 sidecar 的新版本是否正在运行:

    $ istioctl proxy-status
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                                    CLUSTER        CDS                LDS                EDS                RDS                ECDS        ISTIOD                                     VERSION
    details-v1-7d775cb4f6-5t9zm.info                    Kubernetes     SYNCED (2m25s)     SYNCED (2m25s)     SYNCED (2m17s)     SYNCED (2m25s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    productpage-v1-7c4b6b857-mxrw6.info                 Kubernetes     SYNCED (2m35s)     SYNCED (2m35s)     SYNCED (2m17s)     SYNCED (2m35s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    ratings-v1-5b896f8544-r552l.info                    Kubernetes     SYNCED (2m21s)     SYNCED (2m21s)     SYNCED (2m17s)     SYNCED (2m21s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v1-746f96c9d4-9pw8k.info                    Kubernetes     SYNCED (2m17s)     SYNCED (2m17s)     SYNCED (2m17s)     SYNCED (2m17s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v2-97bdf5876-4mzx5.info                     Kubernetes     SYNCED (2m35s)     SYNCED (2m35s)     SYNCED (2m17s)     SYNCED (2m35s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v3-77d9db6844-djgjk.info                    Kubernetes     SYNCED (2m19s)     SYNCED (2m19s)     SYNCED (2m17s)     SYNCED (2m19s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    Copy to Clipboard Toggle word wrap

    VERSION 应该与新的 control plane 版本匹配。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat