3、中央仪表盘:Central Dashboard 的功能解析与自定义配置

说实话,很多刚接触 Kubeflow 的朋友,第一眼看到 Central Dashboard 时,会觉得它就是个「花架子」—— 不就是个 Web 页面嘛,能有多重要?

我刚开始也这么想。直到有一次,团队里新来的同事问我:「咱们的 Pipeline 跑完了,去哪里看结果?」我才意识到,这个仪表盘其实是整个 Kubeflow 的「交通枢纽」。你想想看,没有它,你连门都摸不着。

3.1 仪表盘到底能干什么?

Central Dashboard 说白了,就是 Kubeflow 的统一入口。它把分散的组件整合到一个界面上。我个人习惯把它分成三个核心功能:

  • 导航中枢:快速跳转到 Notebook、Pipeline、Katib 等组件
  • 资源概览:查看集群状态、命名空间、运行中的工作负载
  • 用户管理:多租户环境下,控制不同用户的访问权限

嗯,这里要注意一点。仪表盘本身不执行任何计算任务,它只是个「调度员」。真正干活的是背后的各个组件。

3.2 界面布局与核心模块

登录进去后,你会看到左侧的导航栏。我把它拆解成几个关键区域:

区域 功能 我的使用建议
顶部导航 切换命名空间、全局搜索 多项目时,先选对命名空间再操作
左侧菜单 组件入口列表 可以拖拽排序,把常用的放前面
主内容区 显示当前组件的详情 支持 iframe 嵌入,灵活性很高
底部状态栏 显示集群健康度 我曾经忽略这里,结果磁盘爆了才发现

为什么要把命名空间放在这么显眼的位置?因为 Kubeflow 的多租户机制就是靠命名空间隔离的。你选错了命名空间,看到的 Notebook 和 Pipeline 可能完全是另一套。

3.3 自定义配置:让仪表盘更顺手

默认的仪表盘其实够用,但如果你像我一样,每天要在多个项目间切换,那自定义配置就很有必要了。

3.3.1 修改菜单项

你可以通过修改 ConfigMap 来调整左侧菜单。举个例子:

apiVersion: v1
kind: ConfigMap
metadata:
  name: centraldashboard-config
  namespace: kubeflow
data:
  links: |
    {
      "menuLinks": [
        {
          "type": "item",
          "link": "/pipeline/",
          "text": "流水线",
          "icon": "workflow"
        },
        {
          "type": "item",
          "link": "/notebook/",
          "text": "笔记本",
          "icon": "book"
        }
      ],
      "externalLinks": [
        {
          "type": "item",
          "link": "https://your-docs.com",
          "text": "内部文档",
          "icon": "help"
        }
      ]
    }

改完之后,执行 kubectl apply -f config.yaml 再刷新页面就能看到效果。我曾经把团队常用的几个工具链接直接加进去,省去了每次翻书签的麻烦。

3.3.2 调整默认命名空间

如果你大部分时间只用一个命名空间,可以设置默认值:

kubectl edit deployment centraldashboard -n kubeflow
# 在环境变量中添加:
# - name: DASHBOARD_DEFAULT_NAMESPACE
#   value: "your-namespace"

这样每次登录,仪表盘会自动选中你的常用命名空间。别小看这个改动,一天省下几十次点击,积少成多。

3.4 避坑指南:我踩过的几个坑

⚠️ 我曾经犯过的错:

  • 直接修改了 centraldashboard 的 Deployment 镜像版本,结果仪表盘起不来。后来发现版本要和 Kubeflow 主版本匹配。
  • 在 ConfigMap 里写了错误的 JSON 格式,整个菜单加载失败。建议改完后先 kubectl describe configmap 检查一下。
  • 忘了给外部链接加上 https:// 前缀,点击后跳转到奇怪地址。嗯,这种低级错误我犯过两次。

3.5 核心架构图

下面这张图,是我自己梳理的 Central Dashboard 与各组件的交互关系。你看一眼就能明白它的定位:

Central Dashboard 👤 用户 Notebook Server Pipelines Katib 其他组件 Kubernetes 集群 (命名空间隔离) 存储 (PVC) / 网络 / 认证 (Istio + Dex) 仪表盘 功能组件 K8s 集群 基础设施

从这张图能看出来,仪表盘处于用户和底层资源之间。它不直接操作 K8s API,而是通过各个组件的接口来转发请求。这种设计的好处是:你可以在不接触底层集群的情况下,完成大部分日常操作。

3.6 实用技巧:让仪表盘更好用

💡 我常用的几个小技巧:

  • 快捷键:按 Ctrl + K 可以快速搜索组件,比用鼠标点快多了
  • 收藏功能:把最常用的 Pipeline 或 Notebook 添加到收藏夹,首页直接访问
  • 多标签页:按住 Ctrl 点击菜单项,可以在新标签页打开,方便对比查看
  • 自定义 Logo:修改 ConfigMap 里的 branding 字段,可以换成公司 Logo

3.7 监控仪表盘状态

仪表盘本身也是跑在 K8s 上的 Pod。我建议你定期检查它的健康状态:

# 查看 Pod 状态
kubectl get pods -n kubeflow | grep centraldashboard

# 查看日志
kubectl logs -n kubeflow deployment/centraldashboard

# 检查端口是否正常
kubectl port-forward -n kubeflow svc/centraldashboard 8080:80

有一次我发现仪表盘加载特别慢,查了半天,原来是背后的 Istio 网关出了问题。所以当你觉得仪表盘卡顿时,别急着怪它,先看看依赖的组件是否正常。

好了,关于 Central Dashboard 的核心功能和自定义配置,就聊到这里。记住一点:仪表盘是你的「驾驶舱」,花点时间把它调教顺手,后面的工作会事半功倍。


公众号:蓝海资料掘金营,微信deep3321