如何从我在 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-dashboard
或 kube-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 deployment
和kubectl --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 存储由另一个应用程序生成的访问令牌?