卸载 Cloud Service Mesh
本页介绍了如何卸载 Cloud Service Mesh。
卸载 Cloud Service Mesh
使用以下命令卸载所有 Cloud Service Mesh 组件。这些命令还会删除 istio-system
命名空间和所有自定义资源定义 (CRD),包括您应用的所有 CRD。
为防止应用流量中断,请执行以下操作:
- 将任何 STRICT mTLS 政策降级为 PERMISSIVE。
- 移除任何可能阻止流量的 AuthorizationPolicy。
通过 Fleet API 停用自动代管式 Cloud Service Mesh, (如果已启用)。
在您的命名空间中停用 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/rev
或istio-injection
标签,则表示命名空间未启用自动注入功能。重启已注入 Sidecar 的工作负载以移除代理。
如果您使用的是托管式 Cloud Service Mesh,请移除集群中的所有
controlplanerevision
资源:kubectl delete controlplanerevision RELEASE_CHANNEL -n istio-system
其中,RELEASE_CHANNEL 是您预配的发布渠道,例如
asm-managed
、asm-managed-rapid
或asm-managed-stable
。从集群中删除网络钩子(如果存在)。
集群内 Cloud Service Mesh
删除
validatingwebhooksconfiguration
和mutatingwebhookconfiguration
。kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot
托管式 Cloud Service Mesh
A. 删除
validatingwebhooksconfiguration
。kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
B.删除
mutatingwebhookconfiguration
。kubectl delete mutatingwebhookconfiguration RELEASE_CHANNEL
当所有工作负载启动且未观察到代理时,您便可以安全地删除集群内控制层面以停止计费。如果您部署了代管式控制层面,则系统会在上一步中自动删除该控制层面。
如需移除集群内控制层面,请运行以下命令:
istioctl x uninstall --purge
如果没有其他控制平面,您可以删除
istio-system
命名空间中移除所有 Cloud Service Mesh 资源。否则,请删除 与 Cloud Service Mesh 修订版本相对应的多项服务。这样可以避免删除 CRD 等共享资源。删除
istio-system
和asm-system
命名空间:kubectl delete namespace istio-system asm-system --ignore-not-found=true
检查删除操作是否成功:
kubectl get ns
输出应指示
Terminating
状态并返回所示内容,否则您可能需要手动删除命名空间中的其余资源并重试。NAME STATUS AGE istio-system Terminating 71m asm-system Terminating 71m
如果您使用的是代管式 Cloud Service Mesh,请删除
mdp-controller
部署:kubectl delete deployment mdp-controller -n kube-system
删除
istio-cni-node
DaemonSet:kubectl delete daemonset istio-cni-node -n kube-system
按照步骤从舰队取消注册每个集群。即使您删除了集群,也需要执行此步骤,因为已删除的集群可能仍会注册到舰队。