从Kubernetes集群完全卸载istio(所有组件)

use*_*669 2 kubernetes istio

我使用以下命令安装了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
Run Code Online (Sandbox Code Playgroud)

现在,如何完全卸载它,包括所有容器/入口/出口等(由istio-demo-auth.yaml安装的所有文件?

谢谢。

Rei*_*167 35

如果你使用过istioctl,这非常简单:

istioctl uninstall --purge
Run Code Online (Sandbox Code Playgroud)

istioctl --help当然,如果该命令列在...中会更容易。

编辑:删除x,它不再是实验性的。谢谢@k_o_!

参考: https: //istio.io/latest/docs/setup/install/istioctl/#uninstall-istio


Muh*_*man 8

根据他们在此处文档,您可以将所有规范生成为yml文件,然后将其通过管道传输到简单的 kubectldelete操作

istioctl manifest generate <your original installation options> | kubectl delete -f -
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

istioctl manifest generate --set profile=default | kubectl delete -f -
Run Code Online (Sandbox Code Playgroud)

但是,这种方法的一个缺点是要记住您在安装 istio 时使用的所有选项,这可能很难记住,尤其是在您启用了特定组件的情况下。

如果你已经istio使用 helm's chart安装过,可以轻松卸载

首先,列出所有已安装的图表:

helm list -n istio-system
NAME    NAMESPACE   REVISION    UPDATED                                 STATUS   
istiod  istio-system    1       2020-03-07 15:01:56.141094 -0500 EST    deployed   
Run Code Online (Sandbox Code Playgroud)

然后使用以下语法删除/卸载图表:

helm delete -n istio-system --purge istio-system
helm delete -n istio-system --purge istio-init
...
Run Code Online (Sandbox Code Playgroud)

查看他们的网站以获取有关如何执行此操作的更多信息。

如果您已经istio使用istioctlhelm单独安装了namespace,您可以轻松地完全删除它,namespace这将反过来删除在其中创建的所有资源。

kubectl delete namespace istio-system 
Run Code Online (Sandbox Code Playgroud)


f.l*_*ris 7

只需运行kubectl delete您应用的文件。

kubectl delete -f istio-$(VERSION)/install/kubernetes/istio-demo-auth.yaml
Run Code Online (Sandbox Code Playgroud)

您也可以在文档中找到它。


sur*_*ren 7

如果您已按照说明安装它,则需要以相同的方式将其删除。

kubectl delete -f istio-$(VERSION)/install/kubernetes/helm/istio/templates/crds.yaml
kubectl delete -f istio-$(VERSION)/install/kubernetes/istio-demo-auth.yaml
Run Code Online (Sandbox Code Playgroud)

然后您将手动删除该文件夹istioctl,如果您移动到任何地方。

重要提示:删除命名空间非常容易清理,但您不能在所有情况下都这样做。在这种情况下,如果您只删除命名空间,您将保留所有权限和凭据不变。现在,假设您要更新 Istio,并且 Istio 团队在他们的 RBAC 规则中进行了一些安全更改,但没有更改对象的名称。您将部署新的 yaml 文件,它会抛出一个错误,指出对象(例如 clusterrolebinding)已经存在。如果您不注意该错误是什么,您最终可能会遇到更严重的错误(当没有错误但出现错误时)。


小智 6

清理 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 获取该版本。