1. Kubernetes Dashboard部署与可视化管理实战
作为Kubernetes生态中最受欢迎的可视化管理工具之一,Dashboard为集群管理提供了直观的图形界面。我在生产环境中使用Dashboard已有三年多时间,今天将分享从部署到日常管理的完整实战经验。
1.1 为什么需要Dashboard?
虽然kubectl命令行功能强大,但在以下场景中图形化界面更具优势:
- 快速查看集群整体状态(节点资源、Pod分布等)
- 可视化操作常见资源对象(Deployment、Service等)
- 团队协作时降低Kubernetes的学习门槛
- 紧急情况下的快速故障定位
注意:Dashboard默认不具备RBAC权限控制,直接暴露在公网存在安全风险,必须配合Ingress或反向代理使用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署方案详解
2.1 官方推荐部署方式
最新版(v2.7.0)的推荐安装命令:
bash复制kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
这个manifest文件会创建:
- dashboard命名空间
- deployment和replicaSet资源
- service账户和角色绑定
- 证书Secret(自动生成自签名证书)
2.2 生产环境定制配置
2.2.1 替换自签名证书
默认证书会导致浏览器安全警告,替换方法:
bash复制openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout dashboard.key -out dashboard.crt \
-subj "/CN=dashboard.example.com"
kubectl create secret tls dashboard-cert \
--key=dashboard.key --cert=dashboard.crt \
-n kubernetes-dashboard
然后在Deployment中添加volumeMounts:
yaml复制volumeMounts:
- name: cert
mountPath: /certs
readOnly: true
volumes:
- name: cert
secret:
secretName: dashboard-cert
2.2.2 启用Metrics-Server
要查看Pod的资源使用情况,需先部署metrics-server:
bash复制kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
3. 访问控制配置
3.1 创建管理员ServiceAccount
yaml复制apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
3.2 获取访问令牌
bash复制kubectl -n kubernetes-dashboard create token admin-user
输出示例:
code复制eyJhbGciOiJSUzI1NiIsImtpZCI6Il...(长字符串)
3.3 安全访问方案推荐
方案1:通过kubectl proxy访问
bash复制kubectl proxy
然后访问:
code复制http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
方案2:配置Ingress(生产推荐)
yaml复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-ingress
namespace: kubernetes-dashboard
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- dashboard.example.com
secretName: dashboard-cert
rules:
- host: dashboard.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubernetes-dashboard
port:
number: 443
4. 日常使用技巧
4.1 快速定位问题Pod
Dashboard的筛选功能非常实用:
- 在Pod列表点击"Filter"按钮
- 支持按:
- 命名空间筛选
- Pod状态(Running/Error等)
- 节点名称
- 标签选择器
4.2 资源创建模板
通过Dashboard创建资源时,系统会提供YAML模板:
- 点击右上角"+"按钮
- 选择资源类型(如Deployment)
- 表单填写会自动生成对应YAML
- 高级用户可以直接切换到YAML编辑模式
4.3 日志查看技巧
查看Pod日志时:
- 支持自动刷新(默认关闭)
- 可以下载完整日志文件
- 支持日志关键词高亮(需手动开启)
5. 常见问题排查
5.1 Dashboard无法访问
检查步骤:
- 确认Service类型是否为ClusterIP:
bash复制
kubectl get svc -n kubernetes-dashboard - 检查Pod状态:
bash复制
kubectl get pods -n kubernetes-dashboard - 查看日志:
bash复制
kubectl logs -n kubernetes-dashboard <pod-name>
5.2 令牌失效问题
令牌默认有效期是24小时,解决方法:
- 创建长期有效的令牌:
yaml复制apiVersion: v1 kind: Secret metadata: name: admin-user-token namespace: kubernetes-dashboard annotations: kubernetes.io/service-account.name: admin-user type: kubernetes.io/service-account-token - 获取令牌:
bash复制
kubectl describe secret admin-user-token -n kubernetes-dashboard
5.3 资源数据显示不全
如果CPU/内存数据不显示:
- 确认metrics-server已安装
- 检查metrics-server日志:
bash复制
kubectl logs -n kube-system <metrics-server-pod-name> - 可能需要添加启动参数:
yaml复制command: - /metrics-server - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP
6. 性能优化建议
6.1 调整Dashboard资源限制
默认配置可能不适合大型集群,建议修改:
yaml复制resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 100m
memory: 100Mi
6.2 启用API缓存
对于频繁访问的集群,可以配置:
yaml复制env:
- name: API_SERVER_CACHE_TTL
value: "30" # 缓存时间(秒)
6.3 定期清理旧版本
Dashboard会保留旧ReplicaSet记录,建议设置:
yaml复制spec:
revisionHistoryLimit: 3
7. 替代方案对比
虽然Dashboard是官方方案,但还有其他选择:
| 工具名称 | 优点 | 缺点 |
|---|---|---|
| Lens IDE | 功能全面,支持多集群 | 需要安装桌面客户端 |
| Octant | 轻量级,本地运行 | 功能相对简单 |
| K9s | 命令行TUI界面 | 学习曲线较陡 |
我个人在中小型集群中使用Dashboard+Lens的组合,既满足日常管理需求,又能应对复杂场景。
