🍦 07-K8s 可视化UI界面 Dashboard 部署指南
一、安装 Dashboard
1. 导入离线镜像
将 Dashboard 依赖的镜像包上传到所有工作节点,手动导入:
# 两个Node节点都执行
docker load -i dashboard_2_0_0.tar.gz
docker load -i metrics-scrapter-1-0-1.tar.gz
2. 部署 Dashboard 组件
在 Master 节点执行部署命令:
kubectl apply -f kubernetes-dashboard.yaml
验证 Pod 运行状态:
kubectl get pods -n kubernetes-dashboard
正常输出示例:
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-7445d59dfd-n5krt 1/1 Running 0 66s
kubernetes-dashboard-54f5b6dc4b-mhd2c 1/1 Running 0 66s
查看默认 Service 信息:
kubectl get svc -n kubernetes-dashboard
默认 Service 类型为 ClusterIP,仅集群内部可访问。
3. 修改 Service 暴露 NodePort 端口
将 Service 类型改为 NodePort,通过节点 IP + 端口对外访问:
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
将配置中的 type: ClusterIP 修改为 type: NodePort,保存退出。
再次查看 Service,获取随机映射的端口:
kubectl get svc -n kubernetes-dashboard
输出示例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.98.221.57 <none> 8000/TCP
kubernetes-dashboard NodePort 10.97.37.171 <none> 443:32728/TCP 2m50s
本例中对外暴露的端口为 32728。
4. 浏览器访问与证书问题处理
访问地址:https://任意节点IP:NodePort端口,例如 https://192.168.40.180:32728/
由于 Dashboard 默认使用自签名证书,浏览器会提示安全风险,处理方式:
-
火狐浏览器:点击「高级」→「接受风险并继续」
-
Chrome 浏览器:在报错页面任意位置,直接键盘输入
thisisunsafe(共 11 个字符,无需输入框),即可自动跳过证书校验进入登录页
二、方式一:Token 令牌登录 Dashboard
1. 授权 Dashboard 管理员权限
给 Dashboard 服务账号绑定集群管理员角色,拥有全集群管理权限:
kubectl create clusterrolebinding dashboard-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kubernetes-dashboard:kubernetes-dashboard
2. 获取登录 Token
- 查看命名空间下的 Secret 列表:
kubectl get secret -n kubernetes-dashboard
找到名称格式为 kubernetes-dashboard-token-xxxx 的 Secret。
- 查看 Secret 详情,获取 Token 值:
kubectl describe secret kubernetes-dashboard-token-ppc8c -n kubernetes-dashboard
输出中 token: 后面对应的长字符串即为登录凭证。
3. Token 登录验证
在 Dashboard 登录页选择「Token」方式,粘贴获取到的 Token 字符串,点击登录即可进入管理界面。
三、方式二:kubeconfig 文件登录 Dashboard
通过生成独立的 kubeconfig 配置文件,导入界面完成登录,无需每次输入 Token。
操作目录:
/etc/kubernetes/pki
cd /etc/kubernetes/pki
1. 创建集群(cluster)配置
写入集群地址与 CA 证书到配置文件:
kubectl config set-cluster kubernetes \
--certificate-authority=./ca.crt \
--server="https://192.168.40.180:6443" \
--embed-certs=true \
--kubeconfig=/root/dashboard-admin.conf
2. 创建用户凭证(credentials)
将 Dashboard 的 Token 写入配置文件作为用户认证信息:
# 先把Token存入变量
DEF_NS_ADMIN_TOKEN=$(kubectl get secret kubernetes-dashboard-token-ppc8c -n kubernetes-dashboard -o jsonpath={.data.token}|base64 -d)
# 写入用户凭证
kubectl config set-credentials dashboard-admin \
--token=$DEF_NS_ADMIN_TOKEN \
--kubeconfig=/root/dashboard-admin.conf
3. 创建上下文(context)
将集群与用户绑定,生成访问上下文:
kubectl config set-context dashboard-admin@kubernetes \
--cluster=kubernetes \
--user=dashboard-admin \
--kubeconfig=/root/dashboard-admin.conf
4. 切换默认上下文
kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/dashboard-admin.conf
5. kubeconfig 文件登录
将生成的 /root/dashboard-admin.conf 文件下载到本地,在 Dashboard 登录页选择「Kubeconfig」方式,上传该文件即可完成登录。
四、通过 Dashboard 可视化创建应用
1. 提前导入镜像
将应用镜像(以 nginx 为例)上传到所有工作节点并导入:
docker load -i nginx.tar.gz
2. 界面创建 Deployment 与 Service
-
点击 Dashboard 右上角的「+」号创建资源
-
选择「Create from form」表单创建模式
-
填写核心参数:
-
App name:应用名称,例如
nginx -
Container image:容器镜像名,例如
nginx -
Number of pods:Pod 副本数,例如
2 -
Service:选择
External(对外暴露服务) -
Port:Service 端口,填
80 -
Target port:容器内端口,填
80 -
Protocol:选择
TCP
-
-
点击「Deploy」完成部署
3. 验证应用访问
-
左侧菜单进入「Services」页面,找到刚创建的 nginx 服务
-
查看对外映射的 NodePort 端口(例如 31135)
-
浏览器访问
http://节点IP:端口,例如http://192.168.40.180:31135,能看到 Nginx 欢迎页即为部署成功。
说明:通过表单创建对外服务时,会自动生成 30000 以上的随机 NodePort 端口。
五、端口概念说明(port /targetPort/nodePort)
-
nodePort:集群外部流量访问的入口端口,暴露在节点物理机上,供外部用户访问服务(如浏览器访问 Nginx)。
-
port:Service 在集群内部的端口,用于集群内其他 Pod 互相访问当前服务(例如集群内其他服务调用 MySQL)。
-
targetPort:目标端口,即 Pod 内部容器实际监听的端口,Service 会将流量最终转发到该端口。