文章目录
- [K8S Dashboard 可视化](#K8S Dashboard 可视化)
-
- [一、部署 Dashboard](#一、部署 Dashboard)
-
- [1. 下载部署清单](#1. 下载部署清单)
- [2. 修改 Service 暴露方式](#2. 修改 Service 暴露方式)
- [3. 应用配置](#3. 应用配置)
- [4. 检查 Pod 状态](#4. 检查 Pod 状态)
- [二、访问 Dashboard](#二、访问 Dashboard)
-
- [1. 查看 Service 暴露端口](#1. 查看 Service 暴露端口)
- [2. 打开登录页](#2. 打开登录页)
- 三、创建访问令牌(Token)
-
- [1. 配置管理员账户](#1. 配置管理员账户)
- [2. 应用配置](#2. 应用配置)
- [3. 获取 Token](#3. 获取 Token)
- [四、登录 Dashboard](#四、登录 Dashboard)
K8S Dashboard 可视化
通过 NodePort 方式部署 Kubernetes Dashboard,并创建带 cluster-admin 权限的 Token 登录。
整体流程:下载部署清单 → 修改 Service 为 NodePort → 应用配置 → 检查 Pod / Service → 创建管理员 Token → 登录 Dashboard。
以下命令均在 master 节点执行。
一、部署 Dashboard
1. 下载部署清单
bash
[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml
recommended.yaml 是官方推荐的一体化部署文件,包含 ServiceAccount、Deployment、Service、RBAC 等资源。
2. 修改 Service 暴露方式
bash
[root@master ~]# vim recommended.yaml
从第 32 行开始,将 kubernetes-dashboard 这个 Service 改为 NodePort,并指定 30001 端口:
yaml
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30001 # 添加
selector:
k8s-app: kubernetes-dashboard
type: NodePort # 添加

3. 应用配置
bash
[root@master ~]# kubectl apply -f recommended.yaml
4. 检查 Pod 状态
bash
[root@master ~]# kubectl get pods -n kubernetes-dashboard
输出:
text
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-5657497c4c-jpc9d 1/1 Running 0 2m29s
kubernetes-dashboard-746fbfd67c-nm5c7 1/1 Running 0 2m29s
两个 Pod 均为 Running,说明 Dashboard 部署成功。
二、访问 Dashboard
1. 查看 Service 暴露端口
bash
[root@master ~]# kubectl get svc -n kubernetes-dashboard
输出:
text
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.110.180.64 <none> 8000/TCP 3m25s
kubernetes-dashboard NodePort 10.111.182.77 <none> 443:30001/TCP 3m25s
443:30001/TCP 的端口对应关系:
| 端口 | 含义 |
|---|---|
| 443 | Service 在集群内部使用的端口 |
| 30001 | NodePort 对外暴露的端口 |
2. 打开登录页
浏览器访问 https://<节点IP>:30001,注意协议是 https,不要写成 http。


三、创建访问令牌(Token)
Dashboard 登录需要 Token,这里创建一个拥有集群最高权限的管理员账户。
1. 配置管理员账户
新建 rbac.yaml:
bash
[root@master ~]# vim rbac.yaml
内容如下:
yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kube-system
该文件创建了一个 ServiceAccount,并通过 ClusterRoleBinding 绑定集群最高权限 cluster-admin,用于登录 Dashboard。
2. 应用配置
bash
[root@master ~]# kubectl apply -f rbac.yaml
输出:
text
serviceaccount/dashboard-admin created
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
3. 获取 Token
bash
[root@master ~]# kubectl create token dashboard-admin --namespace kube-system
输出示例:
text
eyJhbGciOiJSUzI1NiIsImtpZCI6IlFQUdhejk2MXdicVZ1b1NpbW1pBZko2WEJqwWDFSdUYtWTFLUpwZFdfs0EifQ.eyJhdWQiOlsiaHR0cHM6Ly9rZHdlbGNmZGV2LmRlZmF1bHQuc3ZjLm5zZHN0ZXJlbG9jY3wiXSwiaXhwIjooxNzUxODg3MTExLCJpc3MiOiJ3NTE0ODM1MTExLCJlbmFzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5rZW5zaHd4OLnN2Yy5jbHVzdGVyLmxvY2FsIiwiYXViZXJjZXJ0IjoiY3ViZXJuZXRlcy5pby9rdWJ1bC1jcmVkZW50aWFscyIsInN1YnplY3R5cGUiOjk7Im5hbWUiOiJkYXNoYm9hcmQtYWRtaW4iLCJuaWQiOiJjODV1MDVjZS0xMDC5LTIwMjMtYTEwZjVjNjIifX0sIm5pZiI6MTc1MTg4NDMxMSwic3ViIjoic3lzdGVtOnN5c3RlbTpzZXJ2aWNlY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.Egq6WBcRa5lfzyTFTwxe_RSFkP3rJ50edS5b2KQbeo07f6AG3ksN2D98eVBPyaTNcPzy8cI7TVDdwoZe3UWYccs-EIkkkqX0yyoN9N-1aqemA6A28cSAr i3gr0K-NYxLN0xjatEMLQhra_jT970CLFyrkU5j-9Phck1N-yVXfeFZIwkT9cUbxOLNMFHkGKosF-qYucUnVS5CySAT83mfE8_duXW-qw1GUlbfAILs3d2V7MS7y5A12pfUSPBvM_9ndLW6mCn1XAYr7Q_C1JC1iItEYycEAfje96jbmSkCZ3CWprdxCTz_6TBk1d8GKie7hw-jMTCMb6UEDiKg-rsdNA
注意 :
kubectl create token是 Kubernetes 1.22 引入的临时令牌方式,默认有效期 1 小时;每次执行都会生成新 token,旧 token 自动失效。仅适合测试,需要长期有效的 token 时应使用 Secret 方式创建。
四、登录 Dashboard
将上一步获取的 Token 粘贴到登录页的 Token 输入框,即可进入 Dashboard。


