游乐游手机版
首页/系统平台/文章详情

Kubernetes Dashboard安装与配置详细图文教程

时间:2026-05-20 14:09
默认部署KubernetesDashboard后服务类型为ClusterIP,无法从外部访问。需将Service类型改为NodePort并指定30000-32767范围内的端口,才能通过浏览器直接访问。登录失败常因缺少权限绑定、token过期或命名空间错误。临时调试可使用port-forward,但生产环境不推荐。部署前需确保集群基础配置正确,避免后续问题。

Linux系统安装Kubernetes Dashboard 可视化管理面板教程【详解】

Linux系统安装Kubernetes Dashboard 可视化管理面板教程【详解】

在Linux系统上安装Kubernetes Dashboard,许多用户首先想到的是使用kubectl apply -f命令直接部署官方的recommended.yaml配置文件。这种方法看似简单直接,但新手常常会忽略一个关键配置:默认创建的服务类型是ClusterIP。这意味着Dashboard服务只能在Kubernetes集群内部被访问。如果你没有后续修改服务类型或使用端口转发,那么从外部浏览器将完全无法连接,导致安装看似成功却无法使用的尴尬局面。

为什么Kubernetes Dashboard部署后无法访问?

这是一个非常普遍的问题。当你执行完kubectl apply -f recommended.yaml后,通过kubectl get svc -n kubernetes-dashboard命令查看服务状态,会发现kubernetes-dashboard服务的TYPE字段显示为ClusterIP,而PORT(S)列通常只有443/TCP,没有任何对集群外部开放的端口。

  • 这是Kubernetes Dashboard官方出于安全考虑的设计:默认配置以最小化暴露面为原则,不主动开放外部网络访问。
  • 如果你既没有设置kubectl port-forward进行端口转发,也没有将Service类型修改为NodePortLoadBalancer
  • 更令人困惑的是,服务日志可能显示一切正常。运行kubectl logs -n kubernetes-dashboard deploy/kubernetes-dashboard命令很可能看不到任何错误信息,这容易让用户误以为Dashboard服务已经成功启动并运行。

如何通过NodePort方式从浏览器直接访问Dashboard?

最直接的解决方案是修改recommended.yaml配置文件中的Service定义部分。你需要将type: ClusterIP更改为type: NodePort,并建议指定一个静态的节点端口,例如31313

  • 使用文本编辑器打开你的YAML文件,找到kind: Service下方的spec配置段,确保其包含类似以下的配置:
    ports:
    - port: 443
      targetPort: 8443
      nodePort: 31313
    type: NodePort
  • 请注意一个重要细节:nodePort的取值范围必须是30000–32767。如果你指定了一个小于30000的端口号,部署时会收到类似error validating data: ValidationError(Service.spec.ports[0]): invalid type for io.k8s.api.core.v1.ServicePort.nodePort的验证错误。
  • 如果应用配置时提示Bind failed on port 31313,说明宿主机上的该端口已被其他进程占用,只需更换一个未被使用的端口即可。
  • 修改完成后,保存文件并重新运行kubectl apply -f recommended.yaml命令。无需担心旧的资源,apply命令会自动识别并更新变更。

Token登录失败的三个常见原因及解决方法

成功访问Dashboard登录页面后,粘贴Token却遇到Unauthorized(未授权)或Forbidden(禁止访问)错误?这通常是由于权限配置或Token本身的问题导致的。

  • 原因一:缺少集群角色绑定(ClusterRoleBinding)。 仅执行kubectl create serviceaccount dashboard-admin-sa创建服务账户是不够的。必须完成关键的一步:使用kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa命令,将cluster-admin这个集群管理员角色绑定到你创建的服务账户上。
  • 原因二:使用的Token已过期。 通过kubectl create token命令生成的Token默认有效期仅为1小时,极易过期。对于需要长期登录管理的场景,建议创建Secret类型的永久Token,或者使用kubeadm token create --ttl 0命令生成一个不过期的Token。
  • 原因三:创建Token时指定的命名空间错误。 运行kubectl create token命令时,必须使用-n kubernetes-dashboard参数明确指定Dashboard服务账户所在的命名空间,而不是默认的default命名空间。否则生成的Token将不具备访问Dashboard后端API的权限。

使用Port-forward进行临时安全调试(不适用于生产环境)

在开发、测试或临时排查问题阶段,更推荐使用kubectl port-forward命令。这种方式无需修改YAML文件暴露节点端口,安全性更高。

  • 命令格式非常简单:kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard 8443:443
  • 执行后,在浏览器中访问https://localhost:8443,并根据提示接受自签名证书的安全警告即可。
  • 需要注意的是,该命令默认在前台运行,关闭终端会话会导致端口转发连接中断。虽然可以通过添加&符号放到后台运行,但该进程可能随Shell会话结束而终止。
  • 因此,必须明确:端口转发方式绝对不要用于生产环境。因为它依赖于本地的kubectl工具与集群API Server保持长连接,一旦网络中断、kubectl进程退出或kubeconfig文件权限变更,访问将立即失效。

总而言之,在Linux上成功部署并稳定运行Kubernetes Dashboard,其挑战往往不在于安装步骤本身,而在于对Kubernetes基础环境和配置依赖的全面理解。每一个环节都紧密关联:容器运行时(如Docker)的cgroup driver是否与kubelet配置一致、必要的内核参数(sysctl)是否已生效、节点主机名(hostname)是否符合命名规范、集群节点间的网络解析(/etc/hosts或DNS)是否畅通。忽略其中任何一环,都可能导致Dashboard页面卡在“Loading…”状态,或陷入登录重定向循环。因此,在应用YAML配置文件之前,花时间确保kubectl get nodes显示所有节点状态为Ready,并且kubectl get pods -A检查核心组件运行正常,这比急于安装更能从根本上提升成功率,节省大量故障排查时间。

来源:https://www.php.cn/faq/2408222.html
上一篇统信UOS系统离线安装软件详细图文教程 下一篇Windows 注册表残留清理教程 批量删除提升系统运行速度
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Win11频繁断网提示默认网关不可用怎么办
系统平台 · 2026-07-03

Win11频繁断网提示默认网关不可用怎么办

先聊聊一个很常见的问题:Windows 11 电脑刚连接 Wi-Fi 或插上网线时还能正常访问网络,可几分钟后突然“掉线”,任务栏右下角出现“无 Internet”提示,右键诊断显示“默认网关不可用”。这时候重启电脑或点击“修复”能暂时恢复,但用不了多久又会断开。这说明系统其实已经获得了 IP 地址

Mac如何取消正在进行的系统备份任务
系统平台 · 2026-07-03

Mac如何取消正在进行的系统备份任务

Mac 正在执行时间机器备份时,进度条卡在“正在准备”或“备份中”迟迟不动,磁盘读写与网络带宽被持续占用——这种情形下,大多数用户都希望能立即中断任务。设想这样一个场景:你正赶着安装大型软件,或者急需拔出外接硬盘,但系统却执意继续备份。别担心,这里有一套行之有效的解决方案:先在“活动监视器”中强制退

电脑显示器刷新率锁死60Hz无法调整的解决方法
系统平台 · 2026-07-03

电脑显示器刷新率锁死60Hz无法调整的解决方法

显示器刷新率锁死60Hz时,需检查DP或HDMI线缆版本并更换VESA认证线缆;可通过显示适配器属性勾选隐藏刷新率选项、显卡控制面板自定义时序、清洁安装驱动或使用CRU工具修改EDID强制启用高刷模式。

Linux系统下Systemd服务管理从零开始方法步骤详解完整教程
系统平台 · 2026-07-03

Linux系统下Systemd服务管理从零开始方法步骤详解完整教程

systemctl管理systemd服务,修改配置于 etc systemd system,启用需daemon-reload再enable。查看状态关注Loaded行,masked服务需unmask并重载恢复。reload发SIGHUP,restart中断连接,reload-or-restart自动降级。日常禁用优先用disable。

Mac如何取消同步iPhone书签和历史记录
系统平台 · 2026-07-03

Mac如何取消同步iPhone书签和历史记录

彻底关闭iCloudSafari同步并选择“保留在Mac上”,然后手动删除书签文件夹或清理~ Library Safari Bookmarks plist文件,最后通过iCloud官网确认同步已失效,即可彻底清除Mac上的iPhone同步书签。