2025,每天10分钟,跟我学K8S(四十一)- Dashboard

什么是Kubernetes Dashboard?

        Kubernetes Dashboard 是 Kubernetes 官方提供的可视化 Web 界面,用于简化集群资源管理和监控操作。简单来说,就是我们之前的所有操作,都是通过 kubectl 命令来完成的,为了简便操作,官方提供了一个web控制台,很多操作可以通过控制台来完成。例如通过 Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。

一、核心功能与适用场景

  1. 核心功能

    • 资源管理:支持 Pod、Deployment、Service 等资源的创建、删除、更新及弹性伸缩操作。
    • 监控与排障:实时查看资源状态、容器日志及事件告警,支持 Pod 终端访问。
    • 配置管理:通过 YAML 文件或表单直接修改资源配置,支持批量操作。
    • 权限控制:集成 RBAC 机制,可精细化控制用户操作权限。
  2. 适用场景

    • 开发测试:快速验证资源配置,避免频繁使用 kubectl 命令。
    • 运维监控:集中查看集群健康状态,定位资源瓶颈。
    • 多租户管理:通过命名空间隔离不同团队资源,降低误操作风险。

二、安装演示

        目前官方Dashboard 版本为kubernetes-dashboard-7.11.1,而从7版本开始,官方已经只支持helm的方式安装。所以本文也采用helm方式安装。

2.1 添加仓库并安装

官方演示操作为下面步骤

# 添加 Helm 仓库并部署  
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

但是由于国内网络问题,可能无法添加官方源,只能去github上将软件包下载到本地

https://github.com/kubernetes/dashboard/releases/download/kubernetes-dashboard-7.11.1/kubernetes-dashboard-7.11.1.tgzhttps://github.com/kubernetes/dashboard/releases/download/kubernetes-dashboard-7.11.1/kubernetes-dashboard-7.11.1.tgz

# 下载
root@k8s-master:~/dashboard# wget https://github.com/kubernetes/dashboard/releases/download/kubernetes-dashboard-7.11.1/kubernetes-dashboard-7.11.1.tgz

# 解压
root@k8s-master:~/dashboard# tar zxvf kubernetes-dashboard-7.11.1.tgz 
kubernetes-dashboard/Chart.yaml

# 查看目录结构
root@k8s-master:~/dashboard# tree
.
├── kubernetes-dashboard
│   ├── Chart.lock
│   ├── charts
│   │   ├── cert-manager
│   │   │   ├── Chart.yaml
│   │   │   ├── README.md
......

2.2 修改镜像地址

vim kubernetes-dashboard/values.yaml

    repository: docker.io/kubernetesui/dashboard-auth
    repository: docker.io/kubernetesui/dashboard-web
    repository: docker.io/kubernetesui/dashboard-metrics-scraper
    repository: docker.io/kubernetesui/dashboard-api
====修改为====
    repository: m.daocloud.io/docker.io/kubernetesui/dashboard-auth
    repository: m.daocloud.io/docker.io/kubernetesui/dashboard-web
    repository: m.daocloud.io/docker.io/kubernetesui/dashboard-metrics-scraper
    repository: m.daocloud.io/docker.io/kubernetesui/dashboard-api




vim kubernetes-dashboard/charts/kong/values.yaml 
  repository: kong
====修改为====
  repository: m.daocloud.io/docker.io/kong





# 安装
root@k8s-master:~/dashboard# helm upgrade --install kubernetes-dashboard kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
Release "kubernetes-dashboard" does not exist. Installing it now.
.....
Dashboard will be available at:
  https://localhost:8443


# 等待所有pod运行正常后,查看svc和pod状态
root@k8s-master:~/dashboard# kubectl get pod -n kubernetes-dashboard 
NAME                                                   READY   STATUS    RESTARTS   AGE
kubernetes-dashboard-api-7744c84465-z76gq              1/1     Running   0          2m28s
kubernetes-dashboard-auth-5ff6f5889b-74r28             1/1     Running   0          2m28s
kubernetes-dashboard-kong-75dd496684-gf62v             1/1     Running   0          2m28s
kubernetes-dashboard-metrics-scraper-9b9f5c9d5-sgh7j   1/1     Running   0          2m28s
kubernetes-dashboard-web-6c8f4d7666-jskjg              1/1     Running   0          2m28s
root@k8s-master:~/dashboard# 
root@k8s-master:~/dashboard# kubectl get svc -n kubernetes-dashboard 
NAME                                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes-dashboard-api               ClusterIP   10.102.121.61    <none>        8000/TCP         2m36s
kubernetes-dashboard-auth              ClusterIP   10.103.103.175   <none>        8000/TCP         2m36s
kubernetes-dashboard-kong-proxy        ClusterIP   10.99.183.86     <none>        443/TCP          2m36s
kubernetes-dashboard-metrics-scraper   ClusterIP   10.101.165.125   <none>        8000/TCP         2m36s
kubernetes-dashboard-web               NodePort    10.99.103.97     <none>        8000:32528/TCP   2m36s

2.3 创建用户和token

# 创建管理员账户  
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard  
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin  
# 获取 Token  
kubectl -n kubernetes-dashboard create token dashboard-admin  

注意​​:Token 默认有效期 1 小时,可通过 --duration=24h 延长

2.4 登录web界面验证

        由于默认情况下,dashboard是没有开启nodeport对外的,所以需要临时修改端口转发类型

# 修改端口类型
kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'


# 若需要指定端口,可以指定一个固定的 nodePort,这里修改为30083:
kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard --type='json' -p '[{"op":"add","path":"/spec/ports/0/nodePort","value":30083}]'

除了上述的命令行修改,还可以通过编辑配置yaml文件的方式来修改。

kubectl edit svc -n kubernetes-dashboard kubernetes-dashboard-kong-proxy

打开web浏览器,通过nodeport来访问。输入刚才获取到的token

输入token后可以进入主界面,由于还没有安装监控,所以这里的负载显示为空。但是至此一步,dashboard已经安装完毕

posted @ 2025-04-09 14:27  Devopser06  阅读(99)  评论(0)    收藏  举报  来源