如何从Kubernetes集群中完全卸载Istio所有组件?
完全卸载Istio 1.0.5的详细步骤
没问题,我来帮你一步步搞定Istio 1.0.5的完全卸载,确保把所有相关组件——包括容器、Ingress、Egress,还有istio-demo-auth.yaml安装的全部资源,甚至之前设置的自动注入标签和CRD都清理干净。
1. 卸载istio-demo-auth.yaml对应的所有核心资源
首先反向删除通过这个配置文件创建的所有Istio组件,包括控制平面、网关、服务、配置等:
kubectl delete -f istio-1.0.5/install/kubernetes/istio-demo-auth.yaml
这个命令会自动清理所有由该yaml定义的资源,比如IngressGateway、EgressGateway、Pilot、Mixer、Citadel这些组件的Deployment、Service、ConfigMap等。
2. 删除Istio自定义资源定义(CRD)
之前你安装了Istio的CRD,现在需要一并删除:
kubectl delete -f istio-1.0.5/install/kubernetes/helm/istio/templates/crds.yaml
注意:如果你的集群中还有其他依赖这些CRD的自定义资源,需要先手动清理掉这些资源再执行上面的命令;如果是完全卸载Istio,直接执行即可。
3. 移除命名空间的Istio自动注入标签
清理之前给default命名空间设置的自动注入标签:
kubectl label namespace default istio-injection-
这里的-是Kubernetes删除标签的标准语法,确保后续部署的Pod不会被自动注入Istio Sidecar。
4. 验证并清理残留资源
执行完上面的步骤后,检查是否还有残留的Istio相关资源:
- 检查
istio-system命名空间下的Pod:
如果还有未被删除的Pod,可以强制清理:kubectl get pods -n istio-systemkubectl delete pods --all -n istio-system - 检查
istio-system命名空间下的Service:kubectl get svc -n istio-system - 最后,确认
istio-system命名空间没有其他非Istio资源后,可以删除该命名空间:kubectl delete namespace istio-system
额外注意事项
- 如果你之前部署了带有Istio Sidecar的应用,需要重新部署这些应用——因为卸载Istio不会自动移除已存在Pod中的
istio-proxy容器,重新部署后Pod会恢复为普通的无Sidecar状态。 - 确保执行命令时,
istio-1.0.5的路径和你实际的安装路径一致,如果路径不同,替换成你本地的Istio安装包路径即可。
内容的提问来源于stack exchange,提问作者user674669
相关产品推荐
相关产品推荐

