IBM Cloud Docs
设置 Istio

设置 Istio

设置 Istio 受管附加组件

Istio on IBM Cloud® Kubernetes Service 提供了 Istio 的无缝安装,可对 Istio 控制平面组件进行自动更新和生命周期管理,并可与平台日志记录和监视工具相集成。

安装 Istio 附加组件

您可以安装受管 Istio 附加组件,而不是安装社区 Istio。

准备工作

从控制台安装 Istio 附加组件

  1. 群集仪表板中,单击要安装 Istio 附加组件的群集名称。

  2. 导航至“附加组件”部分。

  3. 在“受管 Istio”卡上,单击安装

  4. 再次单击安装

  5. 在“受管 Istio”卡上,验证是否列出了该附加组件。

使用 CLI 安装 Istio 附加组件

登录您的账户。 如果适用,请将相应的资源组设定为目标。 设置集群的上下文。

  1. 查看受支持的 Istio 版本

    ibmcloud ks addon-versions --addon istio
    
  2. 启用 istio 附加组件。 已安装普遍可用的 Istio 管理插件 1.23.5 的默认版本。

    ibmcloud ks cluster addon enable istio --cluster <cluster_name_or_ID>
    
  3. 验证受管 Istio 附加组件的状态是否为 Addon Ready

    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

    示例输出

    NAME            Version     Health State   Health Status
    istio           1.23.5       normal         Addon Ready
    
  4. 您还可以查看附加组件的各个组件,以确保 Istio 服务及其相应的 pod 已部署。

    kubectl get svc -n istio-system
    
    kubectl get pods -n istio-system
    
  5. 接着,可以将应用程序包含在 Istio 服务网中。

更新 Istio 附加组件

更新 Istio 附加组件,该附加组件由 IBM Cloud 测试并核准在 IBM Cloud Kubernetes Service中使用。

请勿使用 istioctl 来更新受管附加组件安装的 Istio 版本。 仅使用以下步骤来更新受管 Istio 附加组件,其中包括 Istio 版本的更新。

要从不受支持的 Istio 附加组件版本进行更新,请将 Istio 组件 更新为 IBM Cloud Kubernetes Service支持的最新补丁版本。

更新 Istio 附加组件的次版本

IBM Cloud IBM Cloud Kubernetes Service 支持的最新 Istio 版本自动推出补丁更新,从而使所有 Istio 组件保持最新。 要将 Istio 组件更新到 IBM Cloud Kubernetes Service支持的 Istio 的下一个次版本 (例如,从 V 1.9 到 1.10),必须手动更新附加组件。 一次只能手动更新 Istio 一个版本。

一次只能手动更新一个版本的 Istio 附加组件。 如果要通过两个或更多版本更新 Istio 附加组件,那么可以重复手动更新过程,也可以 卸载并除去 附加组件,然后使用更高版本 重新安装 该附加组件。

istio-system 名称空间中的 Istio 控制组件更新为最新的次版本时,可能会迂到破坏性更改。 查看在次版本更新期间发生的以下更改。

  • 当更新推广到控制平面 Pod 时,将重新创建这些 Pod。 直到更新完成后,Istio 控制平面才完全可用。
  • 在更新期间,Istio 数据平面将继续运行。 但是,服务网中应用程序的某些流量可能会在短时间内中断。
  • istio-ingressgateway 负载均衡器的外部 IP 地址在更新期间或之后不会更改。

无法将受管 Istio 附加组件还原到先前版本。 如果要还原为较低版本,那么必须卸载附加组件,然后通过指定较低版本来重新安装附加组件。

  1. 查看 Istio 附加组件的当前版本。

    kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}'
    
  2. 查看可用的 Istio 附加组件版本。

    ibmcloud ks addon-versions
    
  3. 查看 Istio 附加组件更改日志 中每个版本中的更改。

  4. 如果要从 V 1.11 升级到 V 1.12,并且 Istio 组件是在 V 1.10 或更低版本上供应的:

    1. 运行该命令以获取更改 Webhook 配置的详细信息。

      kubectl get mutatingwebhookconfigurations
      

      示例输出

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   5          32m
      
    2. 在输出中,找到 istio-sidecar-injector 并查看 WEBHOOK 列。 如果存在 5 或更多 Webhook,请运行以下命令以删除其他 Webhook。

      kubectl delete mutatingwebhookconfigurations istio-sidecar-injector && kubectl rollout restart deploy addon-istio-operator -n ibm-operators
      

      示例输出

      mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted
      
    3. 请检查是否已删除其他 Webhook。 获取突变 Webhook 配置的详细信息,并验证是否存在 4 istio-sidecar-injector Webhook。

      kubectl get mutatingwebhookconfigurations
      

      示例输出

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   4          60s
      
    4. 运行该命令以获取验证 Webhook 配置的详细信息。

      kubectl get validatingwebhookconfigurations
      

      示例输出

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          66s
      istiod-istio-system            1          31m
      
    5. 查看输出。 如果列出了 istiod-istio-system Webhook,请运行以下命令以将其删除。

      kubectl delete ValidatingWebhookConfiguration istiod-istio-system
      

      示例输出

      validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted
      
    6. 验证是否不再列示 istiod-istio-system Webhook。

      kubectl get validatingwebhookconfigurations
      

      示例输出

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          2m
      
  5. 更新 Istio 附加组件。

    ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID>
    
  6. 继续之前,请验证更新是否已完成。

    更新过程可能需要 20 分钟才能完成。

    1. 确保 Istio 附加组件的 运行状况状态normal运行状况状态Addon Ready。 如果状态为 updating,说明更新尚未完成。

      ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
      
    2. 确保 istio-system 名称空间中的控制平面组件 pod 的 STATUSRunning

      kubectl get pods -n istio-system
      
      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
      
  7. 更新 istioctl 客户机和侧柜

更新 istioctl 客户机和侧柜

每当更新 Istio 受管附加组件时,请更新 istioctl 客户机和应用程序的 Istio 侧柜。

例如,附加组件的补丁版本可能由 IBM Cloud Kubernetes Service自动更新,或者您可以 更新附加组件的次要版本。 无论哪种情况,都请更新 istioctl 客户机以及应用程序的现有 Istio 侧柜,以匹配附加组件的 Istio 版本。

  1. 获取 istioctl 客户端和 Istio 附加控制平面组件的版本。

    istioctl version --short=false
    

    示例输出

    client version: version.BuildInfo{Version:"1.11.2"}
    pilot version: version.BuildInfo{Version:1.23.5}
    pilot version: version.BuildInfo{Version:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.23.5}
    ...
    
  2. 在输出中,将 client version (istioctl) 与 Istio 控制平面组件 (例如 pilot version) 的版本进行比较。 如果 client version 和控制平面组件版本不匹配:

    1. 下载与控制平面组件版本相同的 istioctl 客户端。

      curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
      
    2. 导航至 Istio 包目录。

      cd istio-1.23.5
      
    3. Linux 和 macOS 用户: 将 istioctl 客户机添加到 PATH 系统变量。

      export PATH=$PWD/bin:$PATH
      
  3. 在步骤 1 的输出中,将 pilot version 与每个数据平面 pod 的 data plane version 进行比较。

    • 如果 pilot versiondata plane version 匹配,那么无需进一步更新。
    • 如果 pilot versiondata plane version 不匹配,请针对运行旧版本的数据平面 pod 重新启动部署。 每个条目中的 pod 名称和名称空间列示为 data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}
    kubectl rollout restart deployment <deployment> -n <namespace>
    

定制 Istio 安装

您可以通过编辑 managed-istio-custom ConfigMap 资源来定制一组 Istio 配置选项。 这些设置包括对控制平面和服务网格中的监视,日志记录和联网的额外控制。

  1. 描述 managed-istio-custom ConfigMap 资源,查看其内容和内联文档。

    kubectl describe cm managed-istio-custom -n ibm-operators
    
  2. 编辑 managed-istio-custom ConfigMap 资源。

    kubectl edit cm managed-istio-custom -n ibm-operators
    
  3. data 部分中,添加以下一个或多个配置选项的 <key>: "<value>" 对。

    istio-components-pilot-requests-cpu
    缺省值:"500m"
    milli CPU 中为 istiod 组件 pod 配置 CPU 请求。 更改此值时请务必谨慎。 将此值设置得过低可能导致控制平面无法正常工作,而将此值设置得过高可能导致无法调度 istiod pod。
    istio-global-logging-level
    缺省值:"default:info"
    定义控制平面组件的日志作用域和日志消息级别。 作用域表示控制平面组件中的功能区域,每个作用域都支持特定的日志信息级别。 default 日志记录作用域 (针对未分类的日志消息) 将应用于基本 info 级别的控制平面中的所有组件。
    要指定各个组件作用域的日志级别,请输入以逗号分隔的作用域和级别列表,例如 "<scope>:<level>,<scope>:<level>"。 有关每个控制平面组件的作用域以及日志消息的信息级别的列表,请参阅 Istio 组件日志记录文档。 要更改数据平面的日志级别,请使用 istioctl proxy-config log <pod> --level <level> 命令。
    istio-global-outboundTrafficPolicy-mode
    缺省值:"ALLOW_ANY"
    缺省情况下,允许来自服务网格的所有出站流量。 要阻止从服务网格到未在服务注册表中定义或在服务网格中没有 ServiceEntry 的任何主机的出站流量,请设置为 REGISTRY_ONLY
    istio-egressgateway-public-1-enabled
    缺省值:"true"
    要禁用缺省 Istio 出口网关,请设置为 "false"。 例如,您可以改为 创建定制出口网关
    istio-global-proxy-accessLogFile
    缺省值:""
    Envoy 代理将访问信息打印到其标准输出。 当您调试入口或出口问题时,这些日志很有用。 要在对 Envoy 容器运行 kubectl logs 命令时查看此访问信息,请设置为 "/dev/stdout"
    istio-ingressgateway-public-1|2|3-enabled
    缺省值: 仅在区域 1 中为 "true"
    要使应用程序更高可用性,请针对要在其中创建公共 istio-ingressgateway 负载均衡器的每个专区设置为 "true" 。 要使用 定制入口网关 而不是缺省入口网关,可以设置为 "false"
    istio-ingressgateway-zone-1|2|3
    缺省值:"<zone>"
    部署工作程序节点的区域,在安装附加组件时以及应用 Istio 补丁更新时,会自动填充这些区域。 这些字段将集群的区域应用于 istio-ingressgateway-public-1|2|3-enabled 字段。 请注意,如果此设置中列出的区域与集群区域不同步,那么可以通过运行 kubectl delete pod -n ibm-system -l addon.cleanup=istiokubectl delete job -n ibm-system -l addon.cleanup=istio 来重新启动自动填充作业。
    istio-monitoring-telemetry
    缺省值:"true"
    缺省情况下,已启用遥测指标和 Prometheus 支持。 要除去与遥测度量相关联的任何性能问题并禁用所有监视,请设置为 "false"
    istio-meshConfig-enableTracing
    缺省值:"true"
    缺省情况下, Istio 会针对每 100 个请求中的 1 个生成跟踪范围。 要禁用跟踪范围,请设置为 "false"
    istio-pilot-traceSampling
    缺省值:"1.0"
    缺省情况下, Istio 针对 1 每 100 个请求中的生成跟踪范围,这是 1% 的采样率。 要生成更多跟踪范围,请增大百分比值。
    istio-components-pilot-hpa-maxReplicas
    缺省值:"5"
    默认情况下,Istio将 istiod 的默认水平容器自动扩展器(HPA)最大容器数设置为5。 除非您的服务网格较大,且 istiod 需要更多资源来更新配置,否则不要增加该值。

    例如,您的 ConfigMap 可能如下所示。

    apiVersion: v1
    data:
      istio-ingressgateway-zone-1: dal10
      <key: value> # such as istio-egressgateway-public-1-enabled: "false"
    kind: ConfigMap
    metadata:
      name: managed-istio-custom
      namespace: ibm-operators
    

    在您的ConfigMap? 由于 ConfigMap 包含用户定义的值,因此不会使用随时间发布的任何选项来更新 ConfigMap。 您可以改为备份 ConfigMap 的副本,并从集群中删除 ConfigMap。 大约 5 分钟后,将在集群中创建包含新选项的缺省 ConfigMap。 然后,您可以将之前配置的设置从备份复制到此默认设置ConfigMap,配置任何新设置并应用更改。

  4. 保存并关闭配置文件。

  5. 如果更改了 istio-global-logging-levelistio-global-proxy-accessLogFile 设置,那么必须重新启动数据平面 pod 以将更改应用于这些 pod。

    1. 获取不在 istio-system 名称空间中的所有数据平面 pod 的列表。

      istioctl version --short=false | grep "data plane version" | grep -v istio-system
      

      示例输出

      data plane version: version.ProxyInfo{ID:"test-6f86fc4677-vsbsf.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"rerun-xfs-f8958bb94-j6n89.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"test2-5cbc75859c-jh6bx.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"minio-test-78b5d4597d-hkpvt.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"sb-887f89d7d-7s8ts.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"gid-deployment-5dc86db4c4-kdshs.default", IstioVersion:"1.23.5"}
      
    2. 通过删除每个 pod 来将其重新启动。 在上一步的输出中,pod 名称和名称空间在每个条目中列示为 data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.23.5"}

      kubectl delete pod <pod_name> -n <namespace>
      
要更改 ConfigMap 设置吗?
如果要更改已添加到ConfigMap,您可以使用补丁脚本。 例如,如果添加了 istio-global-proxy-accessLogFile: "/dev/stdout" 设置,并且以后想要将其更改回 "",那么可以运行 kubectl patch cm managed-istio-custom -n ibm-operators --type='json' -p='[{"op": "add", "path": "/data/istio-global-proxy-accessLogFile", "value":""}]'
需要调试定制设置吗?
通过运行 kubectl logs -n ibm-operators -l name=managed-istio-operator 来检查 addon-istio-operator (Istio V 1.10 或更高版本) 或 managed-istio-operator (Istio V 1.9 或更低版本) pod 的日志。 Istio 操作程序将验证并协调您所做的任何定制 Istio 更改。

如果禁用 Istio 附加组件,那么在卸载期间不会除去 managed-istio-custom ConfigMap。 重新启用 Istio 附加组件时,将在安装期间应用定制的 ConfigMap。 如果不想在稍后的 Istio 安装中复用定制设置,那么在通过运行 kubectl delete cm -n ibm-operators managed-istio-custom 来禁用 Istio 附加组件之后,必须删除 ConfigMap。 重新启用 Istio 附加组件时,将在安装期间应用缺省 ConfigMap。

卸载 Istio 附加组件

如果完成了 Istio 的工作,就可以清理集群中的 Istio 资源并卸载 Istio 附加组件。

步骤 1: 在卸载之前保存资源

将除去您在 istio-system 名称空间中创建或修改的任何资源。 要保留这些资源,请先保存这些资源,然后再卸载 Istio 附加组件。

  1. 保存 managed-istio-custom ConfigMap 以对问题进行故障诊断或稍后重新安装附加组件。

    kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
    
  2. 保存所有 IstioOperator CR (IOPs)。

    a. 列示 IOP 资源:

    kubectl get iop -A
    

    b. 对于列出的每个 IOP 资源,将每个资源保存到一个文件:

    kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
    

步骤 2: 卸载 Istio 附加组件

从控制台或 CLI 卸载附加组件。 对于 Istio 1.20 和更低版本,将自动删除任何定制 Istio 操作程序 (IOP) 资源。

从控制台卸载 Istio 附加组件
  1. 群集仪表板中,单击要移除 Istio 附加组件的群集名称。

  2. 导航至“附加组件”部分。

  3. 在“受管 Istio”卡上,单击“操作”菜单图标。

  4. 单击卸载。 在该群集中禁用受管 Istio 附加组件,并删除该群集中的所有 Istio 资源。

  5. 在托管的 Istio 卡上,确认已卸载的附加组件已不再列出。

从 CLI 卸载 Istio 附加组件

如果未安装不推荐的 istio-sample-bookinfoistio-extras 附加组件,请跳过步骤 1 和 2。

  1. 禁用 istio-sample-bookinfo 附加组件。
    ibmcloud ks cluster addon disable istio-sample-bookinfo --cluster <cluster_name_or_ID>
    
  2. 禁用 istio-extras 附加组件。
    ibmcloud ks cluster addon disable istio-extras --cluster <cluster_name_or_ID>
    
  3. 禁用 istio 附加组件。
    ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
    
  4. 验证是否此集群中已禁用所有受管 Istio 附加组件。 输出中不应返回任何 Istio 附加组件。
    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

步骤 3: 除去资源

保存资源并禁用附加组件后,可以除去这些资源。

  1. 卸载期间不会除去 managed-istio-custom ConfigMap。 如果稍后重新启用 Istio 附加组件,那么将在安装期间应用任何 您对 ConfigMap 进行的定制设置。 如果您不想在以后的 Istio 安装中复用定制设置,那么必须删除 ConfigMap。

    kubectl delete cm -n ibm-operators managed-istio-custom
    
  2. 删除您创建的任何定制 Istio 操作程序 (IOP) 资源,例如用于定制入口网关。 运行此命令时,Istio 操作程序会自动除去 IOP 资源创建的任何资源,例如部署或服务。

    kubectl delete IstioOperator <resource_name> -n <namespace>
    
  3. 对于 Istio 1.21 和更高版本,请删除 managed-istio IOP。

    kubectl delete iop -n ibm-operators managed-istio
    
  4. 等待 10 分钟,然后继续执行下一步。

步骤 4: 除去 Istio 操作程序

完全卸载附加组件后,可以除去 Istio 操作程序。

删除 Istio 操作程序部署,服务帐户,集群角色绑定和集群角色。

kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
kubectl delete clusterrole addon-istio-operator --ignore-not-found=true

卸载集群中的其他 Istio 安装

如果先前在集群中已使用 IBM Helm chart 或通过其他方法安装了 Istio,请清除该 Istio 安装后,再启用集群中的受管 Istio 附加组件。 要检查 Istio 是否已在集群中,请运行 kubectl get namespaces,然后在输出中查找 istio-system 名称空间。

  • 如果您使用 IBM Cloud Istio Helm 图表安装了 Istio、

    1. 卸载 Istio Helm 部署。
      helm del istio --purge
      
    2. 如果使用的是 Helm 2.9 或更低版本,请删除额外的作业资源。
      kubectl -n istio-system delete job --all
      
    3. 卸载过程可能最长需要 10 分钟。 在集群中安装 Istio 受管附加组件后,请运行 kubectl get namespaces,并验证 istio-system 名称空间是否已除去。
  • 如果您手动安装了 Istio 或使用了 Istio 社区 Helm 图表,请参阅 Istio 卸载文档

  • 如果先前已在集群中安装了 BookInfo,请清除这些资源。

    1. 将目录切换到 Istio 文件位置。
      cd <filepath>/istio-1.23.5
      
    2. 删除集群中的所有 BookInfo 服务、pod 和部署。
      samples/bookinfo/platform/kube/cleanup.sh
      
    3. 卸载过程可能最长需要 10 分钟。 在集群中安装 Istio 受管附加组件后,请运行 kubectl get namespaces,并验证 istio-system 名称空间是否已除去。

对 Istio 附加组件进行故障诊断

要解决使用受管 Istio 附加组件时可能迂到的一些常见问题,请参阅 对受管附加组件进行故障诊断

安装 istioctl CLI

在计算机上安装 istioctl CLI 客户机。 有关更多信息,请参阅 istioctl 命令参考

  1. 检查在集群中安装的 Istio 版本。
    istioctl version
    
  2. 将与集群的 Istio 版本匹配的 istioctl 版本下载到计算机。
    curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
    
  3. 导航至 Istio 包目录。
    cd istio-1.23.5
    
  4. Linux 和 macOS 用户: 将 istioctl 客户机添加到 PATH 系统变量。
    export PATH=$PWD/bin:$PATH
    

从 Istio 附加组件 1.21 迁移到社区 Istio 1.21

您可以迁移到使用社区 Istio 而不是受管 Istio 附加组件。

准备工作

步骤 1: 从控制台禁用 Istio 附加组件

从控制台或 CLI 禁用附加组件。

  1. 群集仪表板中,单击要移除 Istio 附加组件的群集名称。

  2. 导航至“附加组件”部分。

  3. 在“受管 Istio”卡上,单击“操作”菜单图标。

  4. 单击卸载。 此集群中已禁用受管 Istio 附加组件。

  5. 在托管的 Istio 卡上,确认已卸载的附加组件已不再列出。

步骤 1: 从 CLI 禁用 Istio 附加组件

禁用附加组件并验证是否不存在其他 Istio 附加组件。

  1. 禁用 istio 附加组件。
    ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
    
  2. 验证是否此集群中已禁用所有受管 Istio 附加组件。 输出中不应返回任何 Istio 附加组件。
    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    
  3. 等待 10 分钟,然后继续执行下一步。 这样,我们就有时间取消对 istio 运算符的管理。

第 2 步:缩小 Istio 操作员的规模

缩小 Istio 操作员部署规模。

运行以下命令:

kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0

步骤 3: 保存资源

保存在 istio-system 命名空间中创建或修改的任何资源,以及由自定义资源定义 (CRD) 自动生成的所有 Kubernetes 资源。

  1. 保存 managed-istio-custom ConfigMap 以对问题进行故障诊断或稍后重新安装附加组件。

    kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
    
  2. 保存所有 IstioOperator CR (IOPs)。

    • 列示 IOP 资源:
      kubectl get iop -A
      
    • 对于列出的每个 IOP 资源,移除终结器。 使用 managed-istio IOP 的示例:
      kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
      
    • 对于列出的每个 IOP 资源,将每个资源保存到一个文件:
      kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
      
  3. 等待 10 分钟,然后继续执行下一步。

步骤 4: 更改 IOP 的安装程序

删除所有 Istio 操作程序 (IOP) 资源,例如用于定制入口网关。

  1. 确保您的 istioctl cli 工具是所需的补丁版本。

    istioctl version
    
  2. 对于在上一步中保存的每个 IOP 文件,运行 upgrade 命令。

    istioctl upgrade -f <filename>.yaml
    

第 5 步:删除 Istio 操作符和 IOP

删除 Istio 操作员部署、服务帐户、群集角色绑定、群集角色和所有 IOP。

  1. 运行以下命令删除 istio 操作员部署:

    kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrole addon-istio-operator --ignore-not-found=true
    
  2. 删除 IOP。

    • 列示 IOP 资源:
      kubectl get iop -A
      
    • 删除列出的每个 IOP 资源:
      kubectl delete IstioOperator <resource_name> -n <namespace>
      

步骤 6:删除ConfigMap

由于先前已保存 ConfigMap,因此可以将其除去。

除去 managed-istio-custom ConfigMap。

kubectl delete cm -n ibm-operators managed-istio-custom

除去附加组件已完成,您可以根据需要继续使用和升级社区 Istio。