我使用以下命令安装了istio:
VERSION = 1.0.5
GCP = gcloud
K8S = kubectl
@$(K8S) apply -f istio-$(VERSION)/install/kubernetes/helm/istio/templates/crds.yaml
@$(K8S) apply -f istio-$(VERSION)/install/kubernetes/istio-demo-auth.yaml
@$(K8S) get pods -n istio-system
@$(K8S) label namespace default istio-injection=enabled
@$(K8S) get svc istio-ingressgateway -n istio-system
现在,我如何完全卸载它,包括所有容器/入口/出口等(由istio-demo-auth.yaml安装的所有内容?
谢谢。
答案 0 :(得分:6)
基于他们的documentation here,您可以将所有规格生成为yml
文件,然后将其传递到简单的kubectl的delete
操作
istioctl manifest generate <your original installation options> | kubectl delete -f -
这是一个示例:
istioctl manifest generate --set profile=default | kubectl delete -f -
这种方法的缺点是记住安装istio时使用的所有选项,这可能很难记住,尤其是在启用特定组件的情况下。
如果您已使用头盔图安装了istio
,则可以轻松卸载
首先,列出所有已安装的图表:
helm list -n istio-system
NAME NAMESPACE REVISION UPDATED STATUS
istiod istio-system 1 2020-03-07 15:01:56.141094 -0500 EST deployed
,然后使用以下语法删除/卸载图表:
helm delete -n istio-system --purge istio-system
helm delete -n istio-system --purge istio-init
...
查看他们的website,以获取有关如何执行此操作的更多信息。
如果您已经使用istio
或istioctl
在其单独的helm
中安装了namespace
,则可以轻松地完全删除该namespace
,这将依次删除在其中创建的所有资源。
kubectl delete namespace istio-system
答案 1 :(得分:5)
只需对您应用的文件运行kubectl delete
。
kubectl delete -f istio-$(VERSION)/install/kubernetes/istio-demo-auth.yaml
您也可以在docs中找到它。
答案 2 :(得分:5)
只需删除ns
k delete ns istio-system
答案 3 :(得分:4)
如果您使用 istioctl
,那就很简单了:
istioctl x uninstall --purge
当然,如果该命令列在 istioctl --help
...
参考:https://istio.io/latest/docs/setup/install/istioctl/#uninstall-istio
答案 4 :(得分:1)
清理Istio有点棘手,因为它添加了所有东西:CustomResourceDefinitions,ConfigMaps,MutatingWebhookConfigurations等。仅删除istio-system
名称空间是不够的。最安全的选择是使用istio.io的卸载说明来安装方法。
Kubectl:https://istio.io/docs/setup/kubernetes/install/kubernetes/#uninstall
头盔:https://istio.io/docs/setup/kubernetes/install/helm/#uninstall
执行这些步骤时,请使用要删除的Istio版本。因此,如果您要删除Istio 1.0.2,请从istio.io中获取该版本。
答案 5 :(得分:1)
别忘了禁用注入:
kubectl delete -f istio-$(VERSION)/install/kubernetes/helm/istio/templates/crds.yaml
kubectl delete -f istio-$(VERSION)/install/kubernetes/istio-demo-auth.yaml
kubectl label default your-namespace istio-injection=disabled
答案 6 :(得分:1)
使用您在安装中使用的配置文件,例如demo
,运行以下命令
istioctl manifest generate --set profile=demo | kubectl delete -f -
答案 7 :(得分:0)
如果按照说明安装了它,则需要以相同的方式删除它。
kubectl delete -f istio-$(VERSION)/install/kubernetes/helm/istio/templates/crds.yaml
kubectl delete -f istio-$(VERSION)/install/kubernetes/istio-demo-auth.yaml
然后,您将手动删除该文件夹;如果移动到任何位置,也将手动删除istioctl
。
重要提示:清理名称空间非常容易清理,但是您不能在所有情况下都这样做。在这种情况下,如果仅删除名称空间,则将保留所有权限和凭据。现在,假设您要更新Istio,并且Istio团队已在其RBAC规则中进行了一些安全性更改,但未更改对象的名称。您将部署新的yaml文件,并且将引发错误消息,表明该对象(例如clusterrolebinding)已存在。如果您不注意那个错误是什么,您可能会遇到更糟糕的错误类型(当没有错误,但是出了一些问题时)。
答案 8 :(得分:0)
无需查找舵图即可删除CRD:
kubectl delete crd -l chart=istio
答案 9 :(得分:-1)
您好,如果您是通过helm-template
安装的,则可以使用以下命令:
对于CRD:
$ helm template ${ISTIO_BASE_DIR}/install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl delete -f -
$ kubectl delete crd $(kubectl get crd |grep istio)
对于Deployment / NS..etc其他资源:
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system\
--values install/kubernetes/helm/istio/values-istio-demo.yaml \
--set global.controlPlaneSecurityEnabled=true \
--set global.mtls.enabled=true | kubectl delete -f -