1.13 版

卸载 Anthos Service Mesh

本页面介绍如何卸载 Anthos Service Mesh。

卸载 Anthos Service Mesh

使用以下命令卸载所有 Anthos Service Mesh 组件。这些命令还会删除 istio-system 命名空间和所有自定义资源定义 (CRD),包括您应用的所有 CRD。

  1. 为防止应用流量中断,请执行以下操作:

    • 将任何 STRICT mTLS 政策降级为 PERMISSIVE。
    • 移除任何可能阻止流量的 AuthorizationPolicy。
  2. 在您的命名空间中停用 Sidecar 自动注入功能(如果已启用):

     kubectl get namespace YOUR_NAMESPACE --show-labels
    

    输出内容类似如下:

     NAME   STATUS   AGE     LABELS
     demo   Active   4d17h   istio.io/rev=asm-181-5

    如果您在 LABELS 列下方的输出中看到 istio.io/rev=,请将其移除:

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

    如果您在 LABELS 列下方的输出中看到 istio-injection,请将其移除:

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

    如果没有看到 istio.io/revistio-injection 标签,则表示命名空间未启用自动注入功能。

  3. 重启已注入 Sidecar 的工作负载以移除代理。

  4. 移除集群中的所有 ControlPlaneRevision 资源:

    kubectl delete controlplanerevision -n istio-system
    
  5. 从集群中删除网络钩子(如果存在)。

    集群内 Anthos Service Mesh

    删除 validatingwebhooksconfigurationmutatingwebhookconfiguration

    kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot
    

    代管式 Anthos Service Mesh

    A.删除 validatingwebhooksconfiguration

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B.删除 mutatingwebhookconfiguration

    kubectl delete mutatingwebhookconfiguration RELEASE_CHANNEL
    
  6. 当所有工作负载启动且未观察到代理时,您便可以安全地删除集群内控制层面以停止计费。如果您部署了代管式控制层面,则系统会在上一步中自动删除该控制层面。

    如需移除集群内控制层面,请运行以下命令:

    istioctl x uninstall --purge
    

    如果没有其他控制层面,则您可以删除 istio-system 命名空间以移除所有 Anthos Service Mesh 资源。否则,请删除与 Anthos Service Mesh 修订版本相对应的服务。这样可以避免删除 CRD 等共享资源。

  7. 删除 istio-systemasm-system 命名空间:

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  8. 检查删除操作是否成功:

     kubectl get ns
    

    输出应指示 Terminating 状态并返回所示内容,否则您可能需要手动删除命名空间中的其余资源并重试。

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m