当前位置: 首页 > news >正文

从零开始部署 Kubernetes Dashboard:可视化管理你的集群

在 Kubernetes 集群管理中,命令行工具 kubectl 虽然强大,但面对复杂的资源关系和状态监控时,可视化界面往往能让操作事半功倍。Kubernetes Dashboard 作为官方推出的 Web 控制台,能帮我们直观地查看集群状态、管理工作负载、排查问题,是运维和开发人员的得力助手。今天就来手把手教你从安装到配置,一步步搭建起可用的 Kubernetes Dashboard,并解决访问和权限问题。

为什么需要 Kubernetes Dashboard?

可能有同学会问:“我用 kubectl 命令行操作得好好的,为什么还要折腾 Dashboard?”其实两者并不冲突,Dashboard 的优势在于“可视化”和“便捷性”:

  • 直观展示集群资源状态:节点、Pod、服务、部署等资源的运行状态一目了然,无需记忆复杂的 kubectl get 命令;

  • 简化操作流程:通过图形界面即可完成部署应用、伸缩副本、查看日志等操作,降低新手门槛;

  • 实时监控与告警:集成基础监控数据,能快速发现资源异常(如 Pod 崩溃、节点资源不足)。

对于刚接触 Kubernetes 的同学,Dashboard 更是快速熟悉集群的“敲门砖”。

第一步:安装 Kubernetes Dashboard

Kubernetes Dashboard 本身也是一个部署在集群中的应用,官方提供了现成的部署清单,我们直接通过 kubectl 安装即可。

执行安装命令

打开终端,输入以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

这个命令会从官方仓库拉取 v2.7.0 版本的部署配置(这是目前较稳定的版本),并在集群中创建对应的命名空间(kubernetes-dashboard)、Deployment、Service 等资源。

验证安装结果

安装完成后,我们可以通过以下命令检查资源是否正常创建:

kubectl get -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

如果输出中所有资源的 STATUS 都是 RunningActive,说明安装成功。此时 Dashboard 已经在集群内部运行,但默认情况下只能通过集群内部的 Service 访问,我们还需要配置外部访问方式。

第二步:配置外部访问(Ingress 方式)

要从集群外部访问 Dashboard,常见的方式有三种:kubectl proxy 端口转发、NodePort 暴露服务,以及 Ingress 反向代理。这里推荐生产环境中常用的 Ingress 方式,它能通过域名优雅地访问服务,还支持 HTTPS 加密。

前提条件

使用 Ingress 需确保集群中已安装 Ingress Controller(如 Nginx Ingress),如果还没安装,可以参考官方文档先部署。

创建 Ingress 配置文件

新建一个名为 kubernetes-dashboard-ingress.yml 的文件,内容如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: dashboard-ingressnamespace: kubernetes-dashboard  # 与 Dashboard 同命名空间annotations:# 告诉 Ingress 后端服务使用 HTTPS 协议nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"# 强制将 HTTP 请求重定向为 HTTPSnginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:ingressClassName: nginx  # 指定使用 Nginx Ingress Controllerrules:- host: web.dashboard.com  # 自定义访问域名(需在本地 hosts 或 DNS 中解析)http:paths:- path: /pathType: Prefixbackend:service:name: kubernetes-dashboard  # 关联 Dashboard 的 Service 名称port:number: 443  # Dashboard 服务的端口(默认是 443)tls:  # 配置 HTTPS 证书(可选,测试环境可暂时忽略)- hosts:- web.dashboard.com

应用 Ingress 配置

执行以下命令创建 Ingress 资源:

kubectl apply -f kubernetes-dashboard-ingress.yml

配置域名解析

由于我们使用了自定义域名 web.dashboard.com,需要确保本地能解析到集群中 Ingress Controller 所在的节点 IP。可以修改本地 hosts 文件(Windows 路径:C:\Windows\System32\drivers\etc\hosts;Linux/Mac 路径:/etc/hosts),添加一行:

<Ingress Controller 节点IP>  web.dashboard.com

替换 <Ingress Controller 节点IP> 为实际运行 Ingress Controller 的节点 IP(可通过 kubectl get pods -n ingress-nginx -o wide 查看)。

第三步:创建管理员账户并获取访问令牌

Kubernetes 是一个强权限控制的系统,默认情况下 Dashboard 不允许匿名访问,我们需要创建一个具有管理员权限的服务账户(Service Account),并获取访问令牌(Token)。

创建服务账户和权限绑定

新建 dashboard-sa.yml 文件,内容如下:

# 定义服务账户(命名空间需与 Dashboard 一致)
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
# 将服务账户绑定到集群管理员角色(cluster-admin)
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin  # 集群最高权限角色
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

执行以下命令创建资源:

kubectl apply -f dashboard-sa.yml

获取短期访问令牌

服务账户创建后,可通过以下命令生成一个短期有效的令牌(默认有效期 1 小时,适合临时测试):

kubectl -n kubernetes-dashboard create token admin-user

执行后会输出一长串字符串,这就是访问 Dashboard 的令牌,复制保存好。

获取长期访问令牌(推荐)

短期令牌过期后需要重新生成,不方便日常使用。我们可以通过创建 Secret 来生成长期有效的令牌(有效期通常与 Secret 生命周期一致,默认不会自动过期)。

1. 创建存储令牌的 Secret

新建 admin-user-permanent-token.yml 文件:

apiVersion: v1
kind: Secret
metadata:name: admin-user-permanent-tokennamespace: kubernetes-dashboardannotations:# 关联到前面创建的 admin-user 服务账户kubernetes.io/service-account.name: admin-user
type: kubernetes.io/service-account-token

执行命令创建 Secret:

kubectl apply -f admin-user-permanent-token.yml
2. 关联 Secret 到服务账户

执行以下命令将 Secret 与 admin-user 服务账户绑定:

kubectl patch serviceaccount admin-user -n kubernetes-dashboard -p '{"secrets": [{"name": "admin-user-permanent-token"}]}'
3. 提取长期令牌

最后,通过以下命令获取长期令牌:

kubectl get secret admin-user-permanent-token -n kubernetes-dashboard -o jsonpath="{.data.token}" | base64 --decode

同样复制输出的令牌,这个令牌可以长期使用(除非手动删除 Secret)。

第四步:登录 Dashboard 并开始使用

访问 Dashboard

在浏览器中输入我们配置的域名 https://web.dashboard.com(注意是 HTTPS),此时可能会提示“证书不安全”(因为我们没配置正式 SSL 证书),忽略警告继续访问即可(生产环境需配置 valid 证书)。

登录界面操作

访问后会看到登录界面,选择“Token”方式,粘贴前面复制的令牌,点击“登录”。

登录成功后,你会看到 Dashboard 的主界面,左侧是导航菜单,包含“工作负载”“服务与 ingress”“存储”“集群”等模块:

  • 在“工作负载”中可以查看和管理 Pod、Deployment、StatefulSet 等;

  • 在“集群”中可以查看节点状态、资源使用情况;

  • 点击任意资源名称,可进入详情页查看日志、事件等信息。

常见问题与解决办法

  1. 访问域名提示“无法访问” 检查 Ingress 资源是否正常(kubectl get ingress -n kubernetes-dashboard),确保域名解析正确,且 Ingress Controller 节点的 80/443 端口已开放。

  2. 令牌无效或登录失败 确认服务账户和 ClusterRoleBinding 已正确创建(kubectl get sa,clusterrolebinding -n kubernetes-dashboard),如果是长期令牌,检查 Secret 是否与服务账户绑定成功。

  3. 界面显示“权限不足” 可能是 ClusterRoleBinding 配置错误,确保 roleRef.namecluster-admin,且 subjects 中的服务账户名称和命名空间正确。

总结

通过以上步骤,我们完成了 Kubernetes Dashboard 的安装、外部访问配置、管理员账户创建和令牌获取,最终成功登录并使用 Dashboard 管理集群。Dashboard 作为可视化工具,能极大简化集群操作,但生产环境中需注意:

  • 限制令牌的权限范围(避免使用 cluster-admin 等高权限角色);

  • 配置正式 SSL 证书,确保访问安全;

  • 定期轮换令牌,降低泄露风险。

希望这篇教程能帮你快速上手 Kubernetes Dashboard,让集群管理更轻松!如果在操作中遇到问题,欢迎在评论区留言讨论~

http://www.dtcms.com/a/356339.html

相关文章:

  • [Linux]学习笔记系列 -- mm/shrinker.c 内核缓存收缩器(Kernel Cache Shrinker) 响应内存压力的回调机制
  • 创意程序之MP3分割工具
  • sqlachemy
  • AI操作系统语言模型设计 之1 基于意识的Face-Gate-Window的共轭路径的思维-认知-情感嵌套模型
  • 【C语言】深入理解指针(2)
  • 龙迅#LT7621GX适用于两路HDMI2.1/DP1.4A转HDMI2.1混切应用,分辨率高达8K60HZ!
  • 第二阶段WinForm-11:自定义控件
  • 嵌入式Linux驱动开发:i.MX6ULL中断处理
  • 深入解析Qt节点编辑器框架:交互逻辑与样式系统(二)
  • C++基础(⑤删除链表中的重复节点(链表 + 遍历))
  • 储能变流器之LLC
  • MySQL数据库精研之旅第十四期:索引的 “潜规则”(上)
  • Unity、Unreal Engine与Godot中纹理元数据管理的比较分析
  • 嵌入式Linux LED驱动开发
  • Ubuntu22.04系统安装Opencv,无法定位包libjasper-dev libdc1394-22-dev的解决办法
  • 【C++】C++入门——(上)
  • GTSAM中gtsam::LinearContainerFactor因子详解
  • 【C++八股文】计算机网络篇
  • 【YOLO学习笔记】数据增强mosaic、Mixup、透视放射变换
  • flutter-使用url_launcher打开链接/应用/短信/邮件和评分跳转等
  • leetcode 338 比特位计数
  • rockchip温控及cpu降频配置
  • 事务和锁(进阶)
  • 使用 Docker 部署 Squid 为 Kubernetes 中的 Nexus3 提供公网代理访问
  • Windows12概念曝光,巧用远程控制工具抢先体验
  • 人脸识别“不备案“有哪些后果?
  • 公司内网部署离线deepseek+docker+ragflow本地模型实战
  • Day15 Logurs框架学习
  • Elasticsearch核心配置与性能优化
  • Linux 线程调度核心要点