【问题标题】:How do I remove the Kubernetes dashboard resources from my deployment on Google Cloud Platform?如何从我在 Google Cloud Platform 上的部署中删除 Kubernetes 仪表板资源?
【发布时间】: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

【问题讨论】:

    标签: kubernetes google-cloud-platform


    【解决方案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
    

    【讨论】:

    【解决方案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。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2017-11-04
                  • 2019-11-10
                  • 2020-09-05
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-07-06
                  • 1970-01-01
                  • 2018-06-01
                  相关资源
                  最近更新 更多