🗺️ 系列目录:
- K8s系列一:Ubuntu 22.04 从零搭建集群(Flannel + Containerd)
- K8s系列二:安装 Dashboard – 原生 Web 控制台配置 👈 当前篇章
- K8s系列三:安装 Rancher – 企业级多集群管理平台
- K8s系列四:安装 Kuboard – 国产可视化运维工具
📋 文档概述
本文档旨在为已搭建好的 Kubernetes 集群安装官方 Web 管理控制台 —— Kubernetes Dashboard。通过 Dashboard,可以图形化地查看和管理集群中的大多数资源(工作负载、服务、配置、存储等),大大降低 K8s 的学习和运维门槛。
✅ 适用条件
- 已有一个正常运行的 K8s 集群(参考本系列第一篇文档)
- 集群网络插件(如 Flannel)已安装且所有节点状态为
Ready - 在 Master 节点上执行以下操作
一、部署 Kubernetes Dashboard
1.1 下载并安装 Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
执行后,K8s 会自动在
kubernetes-dashboard 命名空间中创建所有必要的资源(Deployment、Service、RBAC 等)。
1.2 验证安装状态
# 查看 Dashboard 相关 Pod 是否正常运行
kubectl get pods -n kubernetes-dashboard
# 查看 Service 信息
kubectl get svc -n kubernetes-dashboard
等待所有 Pod 状态变为
Running 即可继续下一步。二、创建管理员用户并获取 Token
Dashboard 默认不开放外部访问,并且需要权限才能登录。我们需要创建一个管理员用户并获取其 Token 作为登录凭证。
2.1 创建管理员用户配置文件
创建一个文件 dashboard-adminuser.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
2.2 应用配置并获取 Token
# 应用配置
kubectl apply -f dashboard-adminuser.yaml
# 获取登录所需的 token
kubectl -n kubernetes-dashboard create token admin-user
执行后会输出一长串字符串,这就是登录 Dashboard 的密码,妥善保存。

三、配置外部访问(NodePort 方式)
默认情况下 Dashboard 的服务类型为 ClusterIP,只能在集群内部访问。为了方便外部访问,我们将其修改为 NodePort 类型。
3.1 修改 Service 类型
# 编辑 dashboard 服务
kubectl -n kubernetes-dashboard edit service kubernetes-dashboard
找到
spec.type 字段,将 ClusterIP 改为 NodePort:spec:
type: NodePort # 原来为 ClusterIP
ports:
- port: 443
targetPort: 8443
nodePort: 32593 # 系统会自动分配,也可以手动指定(可选)

3.2 查看暴露的端口
kubectl -n kubernetes-dashboard get service kubernetes-dashboard
输出示例:
root@k8s-master:~# kubectl -n kubernetes-dashboard get service kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.100.254.94 <none> 443:32593/TCP 18m
记下
PORT(S) 列中的 32593(实际端口由系统自动分配)四、访问 Kubernetes Dashboard
4.1 访问地址
在浏览器中输入以下地址:
https://<任意节点IP>:32593
4.2 登录说明
- 登录方式:选择 Token 方式登录。
- 输入 Token:粘贴之前在第二步中获取的 token 字符串。

4.3 验证登录
成功登录后,将看到 Kubernetes Dashboard 的主界面,可以浏览集群中的各种资源:
- 工作负载:查看 Pod、Deployment、StatefulSet 等
- 服务与发现:查看 Service、Ingress 等
- 配置:查看 ConfigMap、Secret 等
- 存储:查看 PVC、StorageClass 等
五、常见问题排查
Q1: Dashboard Pod 一直处于 CrashLoopBackOff 状态?
可能原因:镜像拉取失败或权限配置错误。
解决方法:
# 查看详细日志
kubectl logs -n kubernetes-dashboard -l k8s-app=kubernetes-dashboard
# 如果国内拉取镜像困难,可以手动修改镜像地址
kubectl set image -n kubernetes-dashboard deployment/kubernetes-dashboard \
kubernetes-dashboard=registry.aliyuncs.com/google_containers/dashboard:v2.7.0
Q2: 浏览器访问时提示 403 或 401?
可能原因:Token 过期或权限不足。
解决方法:重新生成一个新的 Token
kubectl -n kubernetes-dashboard create token admin-user
Q3: 忘记保存的 Token 怎么办?
解决方法:可以随时重新获取
kubectl -n kubernetes-dashboard create token admin-user
Q4: 如何修改 NodePort 端口为固定值?
解决方法:编辑 service 时,在 ports 下指定 nodePort 字段
ports:
- port: 443
targetPort: 8443
nodePort: 30001 # 指定为 30001,需在 30000-32767 范围内
六、清理(如需卸载)
如果需要卸载 Dashboard,执行以下命令:
# 删除管理员用户
kubectl delete -f dashboard-adminuser.yaml
# 删除 Dashboard 所有资源
kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml