如何从我在 Google Cloud Platform 上的部署中删除 Kubernetes 仪表板资源?

Posted

技术标签:

【中文标题】如何从我在 Google Cloud Platform 上的部署中删除 Kubernetes 仪表板资源?【英文标题】:How do I remove the Kubernetes dashboard resources from my deployment on Google Cloud Platform? 【发布时间】:2018-02-20 17:37:54 【问题描述】:

我创建了一个 Kubernetes 部署。但是,似乎有额外的 pod 正在运行——我希望能够删除不必要的。

我认为不需要运行仪表板容器。我想删除它以释放 CPU 资源。

如何禁止此容器启动?最好来自部署配置。

基本上是以下 pod:

kubectl get pods --all-namespaces | grep "dashboard"                                  
kube-system   kubernetes-dashboard-490794276-sb6qs                  1/1       Running   1          3d

其他信息:

kubectl --namespace kube-system get deployment的输出:

NAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
heapster-v1.3.0        1         1         1            1           3d
kube-dns               2         2         2            2           3d
kube-dns-autoscaler    1         1         1            1           3d
kubernetes-dashboard   1         1         1            1           11m
l7-default-backend     1         1         1            1           3d

kubectl --namespace kube-system get rs 的输出:

NAME                             DESIRED   CURRENT   READY     AGE
heapster-v1.3.0-191291410        1         1         1         3d
heapster-v1.3.0-3272732411       0         0         0         3d
heapster-v1.3.0-3742215525       0         0         0         3d
kube-dns-1829567597              2         2         2         3d
kube-dns-autoscaler-2501648610   1         1         1         3d
kubernetes-dashboard-490794276   1         1         1         12m
l7-default-backend-3574702981    1         1         1         3d

【问题讨论】:

【参考方案1】:

2021 年 8 月更新

要彻底删除,您必须删除大量对象。加班移除仪表板一直是一个常见问题,因此您现在可以这样做:

kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

如果您不想做盲目的事情并且想知道要删除的内容,请尝试执行以下操作:

kubectl get secret,sa,role,rolebinding,services,deployments --namespace=kube-system | grep dashboard

如果输出为空,只需使用命令仔细检查仪表板命名空间

kubectl get namespaces

仪表板存储在单独的命名空间中,根据您的上下文,仪表板可能并不总是位于同一命名空间中。如果您想深入了解,请尝试使用 kubernetes-dashboardkube-system 并始终在调用 kubectl 时指定命名空间。

【讨论】:

应该被标记为接受的答案。【参考方案2】:

2020 年 5 月更新:

感谢Lee Richardson 的评论;)

他们更改了 repo 中文件的组织结构以及Kubernetes manual 上的命令,因此新的kubectl delete 命令需要是:

kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

原帖:

如前所述,您也可以删除部署以删除 pod,运行以下命令:

kubectl delete deployment kubernetes-dashboard --namespace=kube-system 

但是,如果你想清理所有仪表盘相关的东西,你可以简单地执行基于官方Kubernetes manual的删除命令K8s集群文件:

kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml

【讨论】:

前两个答案具有误导性,因为我已经列出了错误以删除不良服务,谢谢您的回复,它将帮助我:D raw.githubusercontent.com/kubernetes/dashboard/master/aio/… 是 404。也许需要将其替换为位于以下位置的单个文件:github.com/kubernetes/dashboard/tree/master/aio/deploy/…【参考方案3】:

这些答案都不适合我,因为每个答案都假设命名空间是kube-system,这并不总是正确的。 因此,您需要先查看名称空间:

$ kubectl get deployments -A
NAMESPACE              NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
default                nginx-deployment            3/3     3            3           39m
kube-system            coredns                     2/2     2            2           93m
kubernetes-dashboard   dashboard-metrics-scraper   1/1     1            1           12m
kubernetes-dashboard   kubernetes-dashboard        1/1     1            1           12m

从第一列(NAMESPACE)可以看出,那么:

$ kubectl delete deployment kubernetes-dashboard  --namespace=kubernetes-dashboard
$ kubectl delete deployment dashboard-metrics-scraper --namespace=kubernetes-dashboard

对服务做同样的事情(如果有的话):

$kubectl get service -A
NAMESPACE              NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
default                kubernetes                  ClusterIP   10.96.0.1      <none>        443/TCP                  102m
default                nginx-service               NodePort    10.96.31.151   <none>        80:31634/TCP             49m
kube-system            kube-dns                    ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   102m
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.102.22.35   <none>        8000/TCP                 22m

然后删除所有仪表板服务:

$ kubectl delete service kubernetes-dashboard  --namespace=kubernetes-dashboard
$ kubectl delete service dashboard-metrics-scraper  --namespace=kubernetes-dashboard

最后是服务帐号和密码:

$ kubectl delete sa kubernetes-dashboard --namespace=kubernetes-dashboard
$ kubectl delete secret kubernetes-dashboard-certs --namespace=kubernetes-dashboard
$ kubectl delete secret kubernetes-dashboard-key-holder --namespace=kubernetes-dashboard

【讨论】:

这是真正的答案,如果您遵循 kubernetes 文档,将仪表板安装在 kubernetes-dashboard 命名空间而不是 kube-system 中,那么这是唯一可行的方法【参考方案4】:

使用标签选择器:

kubectl --namespace=kube-system delete deployment,service,role,rolebinding,sa,secret -l k8s-app=kubernetes-dashboard

【讨论】:

【参考方案5】:

只需使用kubectl --namespace kube-system delete deployment kubernetes-dashboard,您的集群中将不再有仪表板

【讨论】:

什么时候需要运行这个命令?一次就足以阻止它将来再次启动吗? 删除后好像马上开始备份了。 您是否完全按照我提供的命令运行?如果是,请提供kubectl --namespace kube-system get deploymentkubectl --namespace kube-system get rs的输出 你是如何配置集群的? 旁注:您是否真的在运行仪表板?此特定组件的占用空间几乎为零【参考方案6】:
kubectl --namespace=kube-system edit deployment kubernetes-dashboard

并设置replicas: 0

这似乎适用于仪表板。

【讨论】:

【参考方案7】:

对我来说,最简单的方法是找到您使用哪个 yaml 部署它。 并简单地做:

kubectl 删除 -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/alternative.yaml

替换为您的 yaml。 这是清理的最佳方式,因为您部署的内容将被删除。

【讨论】:

【参考方案8】:

2020 年 12 月更新:

kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

您也可以查看此链接:Kubernetes Dashboard 并将部署命令中的“应用”替换为“删除”。

【讨论】:

你没有添加链接! 感谢@OctaveL 已添加链接。【参考方案9】:

使用vs code kubernetes extension选择命名空间下的仪表板时,只需单击“删除”即可。

之后,系统会要求您确认删除。这发生在屏幕的右侧。

然后它会询问你是否真的要删除所有底层资源。

通过这种方式,您无需命令行即可查看正在执行的操作。

【讨论】:

【参考方案10】:

只需删除Deployment,所有相关的pod都会自动终止。

【讨论】:

我想让部署中的其他容器保持运行。 你有一个单一的部署来为仪表板和其他东西提供服务? 已更新问题 - 很抱歉造成混淆,它实际上是一个 pod 而不是一个容器。 好的,这是一个 pod。您是否手动启动了此 pod?还是使用部署?复制控制器?副本集? 据我所知,这是一个由 kubernetes 启动/管理的默认 pod。【参考方案11】:
kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])

https://kubernetes-v1-4.github.io/docs/user-guide/kubectl/kubectl_delete/

【讨论】:

【参考方案12】:

我使用“minikube start”创建。然后使用“minikube dashboard”创建仪表板。最后,我使用“minikube config set dashboard false”来停止和删除仪表板资源(包括服务,部署,...)。

【讨论】:

【参考方案13】:

'minikube 插件禁用仪表板'对我有用。使用 v1.6.2。

【讨论】:

以上是关于如何从我在 Google Cloud Platform 上的部署中删除 Kubernetes 仪表板资源?的主要内容,如果未能解决你的问题,请参考以下文章

如何在将消息发布到 Google Cloud Pub/Sub 时找出未找到的资源?

从 Google Cloud Build 访问存储在 Google Secret Manager 中的环境变量

如何从我在 Google App Engine SDK 上运行的 Python 应用程序访问本地 MySQL 实例?

我应该如何使用 Google Cloud KMS 存储由另一个应用程序生成的访问令牌?

如何使用R将Google Cloud Datalab输出保存到BigQuery中

如何使用 Google Speech API 访问 Google Cloud Storage 中的文件?