2025,每天10分钟,跟我学K8S(四十一)- Dashboard
什么是Kubernetes Dashboard?
Kubernetes Dashboard 是 Kubernetes 官方提供的可视化 Web 界面,用于简化集群资源管理和监控操作。简单来说,就是我们之前的所有操作,都是通过 kubectl 命令来完成的,为了简便操作,官方提供了一个web控制台,很多操作可以通过控制台来完成。例如通过 Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
一、核心功能与适用场景
-
核心功能
- 资源管理:支持 Pod、Deployment、Service 等资源的创建、删除、更新及弹性伸缩操作。
- 监控与排障:实时查看资源状态、容器日志及事件告警,支持 Pod 终端访问。
- 配置管理:通过 YAML 文件或表单直接修改资源配置,支持批量操作。
- 权限控制:集成 RBAC 机制,可精细化控制用户操作权限。
-
适用场景
- 开发测试:快速验证资源配置,避免频繁使用
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上将软件包下载到本地
# 下载
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已经安装完毕