商城首页欢迎来到中国正版软件门户

您的位置:首页 >Linux系统安装Kubernetes Dashboard 可视化管理面板教程【详解】

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

  发布于2026-05-06 阅读(0)

扫一扫,手机访问

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

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

直接使用 kubectl apply -f 部署官方的 recommended.yaml 文件,看起来是最简单的路径。但这里有个关键点:默认创建的服务类型是 ClusterIP,这意味着它只能在集群内部访问。如果你不修改 Service 类型或者使用 port-forward 进行端口转发,那么从浏览器是无论如何也连不上的,相当于白忙活一场。

为什么 dashboard 服务部署后打不开?

一个非常典型的场景是这样的:执行完 kubectl apply -f recommended.yaml 后,你用 kubectl get svc -n kubernetes-dashboard 命令查看,会发现 kubernetes-dashboard 服务的 TYPE 一栏赫然写着 ClusterIP,而 PORT(S) 也只有 443/TCP,没有任何对外暴露的端口。

  • 这其实是官方有意为之的设计:默认配置以安全为优先,不主动开放外部访问。
  • 如果你既没有配置 port-forward,也没有修改 Service 类型,那么用浏览器访问任何 IP 和端口组合,结果都只会是“连接被拒绝”。
  • 更迷惑的是,错误日志里往往看不出什么端倪。运行 kubectl logs -n kubernetes-dashboard deploy/kubernetes-dashboard 很可能显示一切正常,这很容易让人误以为服务已经“准备就绪”。

如何让 dashboard 从浏览器直接访问(NodePort 方式)

最直接的解决方案,是修改 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 登录失败的三个高频原因

服务能访问了,但拿到 token 粘贴到登录页后,却依然提示 UnauthorizedForbidden?别急,这大概率是权限绑定或者 token 本身出了问题。

  • 原因一:缺少 ClusterRoleBinding。 只运行 kubectl create serviceaccount dashboard-admin-sa 创建服务账户是远远不够的。必须补上关键的一步:kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa,将管理员权限绑定给这个账户。
  • 原因二:token 过期了。 使用 kubectl create token 命令生成的 token 默认有效期只有 1 小时,很容易过期。对于需要长期使用的场景,建议创建 Secret 类型的 token,或者改用 kubeadm token create --ttl 0 生成的永久 token。
  • 原因三:命名空间搞错了。 运行 kubectl create token 时,必须用 -n kubernetes-dashboard 指定 Dashboard 服务账户所在的命名空间,而不是默认的 default 空间。否则生成的 token 根本没有权限访问 Dashboard 的后端服务。

port-forward 临时调试更安全,但别用于生产

在开发或者测试阶段,其实更推荐使用 port-forward 的方式。它既不需要暴露节点端口,也免去了修改 YAML 文件的麻烦。

  • 命令很简单:kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard 8443:443
  • 然后在浏览器中打开 https://localhost:8443,并接受自签名证书的安全风险提示即可。
  • 需要注意的是,这个命令默认在前台运行,你关闭终端,连接也就随之断开了。虽然可以加 & 放到后台,但这个进程很容易随着 shell 退出而终止。
  • 所以,必须警惕的是,这种方式绝对不要用于生产环境。因为它本质上依赖本地的 kubectl 工具和集群 API Server 保持连接,一旦网络波动或者 kubeconfig 的权限发生变更,访问会立刻中断。

说到底,部署 Dashboard 真正的难点,往往不在于那几个步骤本身,而在于每一个环节都紧密依赖着前序配置的准确性:cgroup driver 是否和 Docker 保持一致、必要的 sysctl 参数是否已经生效、节点 hostname 里是否包含了不被允许的下划线、甚至 /etc/hosts 里 master 和 node 的解析能否双向可达……漏掉其中任何一环,Dashboard 就可能卡在永恒的 “Loading…” 状态,或者陷入登录重定向循环。因此,在动手应用 YAML 之前,花点时间确保 kubectl get nodeskubectl get pods -A 都能正常返回结果,往往比急于求成更能节省你的时间。

本文转载于:https://www.php.cn/faq/2408222.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注