4. Notebook 管理:创建 Jupyter Notebook 实例、配置 CPU/GPU 与内存资源、挂载 PVC 数据卷

各位好,我是老张。今天咱们聊聊 Kubeflow 里最常用的功能——Notebook 管理。

说实话,我刚开始接触 Kubeflow 时,最头疼的就是 Notebook 这块。明明在本地跑得好好的代码,一上平台就各种报错。后来才发现,不是代码的问题,是资源没配对,数据卷没挂好。

这一章,我就把 Notebook 管理的三个核心操作掰开揉碎了讲:创建实例、配置资源、挂载数据卷。你跟着走一遍,基本就能上手了。

核心知识点一览:

  • 创建 Jupyter Notebook 实例的完整流程
  • CPU、GPU、内存的配置策略与避坑指南
  • PVC 数据卷的挂载原理与实操
Notebook 管理 创建 Jupyter 实例 选择镜像 配置名称 设置工作区 配置 CPU/GPU/内存 CPU 核数 GPU 类型 内存大小 挂载 PVC 数据卷 创建 PVC 选择挂载点 读写权限 三者配合,才能跑起来

4.1 创建 Jupyter Notebook 实例

进入 Kubeflow Dashboard 后,左侧导航栏找到 Notebooks,点进去。你会看到一个「+ New Notebook」按钮,别犹豫,点它。

创建实例其实就三步:

  1. 填名字——给你的 Notebook 起个名,比如 zhang-san-notebook。注意,名字只能用英文小写、数字和横杠,别加什么中文或特殊符号,不然创建时会报错。
  2. 选镜像——Kubeflow 默认提供了几个镜像,比如 TensorFlow 2.x、PyTorch、R 语言等。我个人习惯用 jupyter-tensorflow-full,因为它预装了大部分常用库,省得我后面再 pip install。
  3. 配工作区——这里可以指定一个 PVC 数据卷作为工作目录。后面会细讲,先跳过。

小技巧:如果你团队有自定义镜像,可以在「Custom Image」里填上镜像地址。比如我们公司就自己打包了一个带内部工具的镜像,省得每次都要装。

填完这些,点「Launch」就等着吧。大概等个 1-3 分钟,状态从黄色变成绿色,就说明实例跑起来了。

4.2 配置 CPU、GPU 与内存资源

这一步是很多人翻车的地方。你想想看,一个 Notebook 实例本质上就是一个 Pod,资源配少了跑不动,配多了浪费集群资源。

在创建页面往下翻,你会看到 Container 配置区域:

资源类型 配置项 我的建议
CPU Requests / Limits 一般设 1-2 核,数据预处理时设 4 核
内存 Requests / Limits 至少 4Gi,训练模型建议 16Gi 以上
GPU 数量 / 类型 先选 1 块,不够再加

这里有个关键概念——Requests 和 Limits。说白了,Requests 是「我保证给你这么多」,Limits 是「你最多只能用这么多」。我曾经遇到过同事把 Limits 设得特别大,结果集群资源被占满,别人都跑不了任务。

避坑指南:我曾经在配置 GPU 时,选了「GPU 类型」为 nvidia.com/gpu,但忘了在集群里安装 NVIDIA 驱动。结果 Notebook 一直起不来,日志里报错说找不到 GPU 设备。所以,用 GPU 前一定先确认集群的 GPU 驱动和 CUDA 版本。

配置 GPU 时,你会看到类似这样的选项:

# 在 YAML 配置中,GPU 是这样写的
resources:
  limits:
    nvidia.com/gpu: 1
  requests:
    nvidia.com/gpu: 1

嗯,这里要注意:如果你只是做数据分析,不跑深度学习,就别开 GPU 了。浪费资源不说,还会让其他需要 GPU 的同事排队等。

4.3 挂载 PVC 数据卷

数据卷这块,说白了就是给你的 Notebook 配一个「持久化硬盘」。默认情况下,Notebook 里的数据是临时的,一关就没了。但有了 PVC,数据就能保存下来。

操作流程是这样的:

  1. 先创建 PVC——在 Kubeflow Dashboard 的「Volumes」页面,点「+ New Volume」。填名字、大小(比如 10Gi)、存储类(一般用默认的 standard)。
  2. 再挂载到 Notebook——创建 Notebook 时,在「Data Volumes」区域,选择刚才创建的 PVC,挂载路径填 /home/jovyan 或者你自己喜欢的路径。

我个人的习惯是,把数据集放在 PVC 里,代码也放在里面。这样即使 Notebook 实例重启了,数据还在,不用重新下载。

挂载配置示例:

# 在 Notebook 的 YAML 中,挂载配置长这样
volumes:
  - name: my-data
    persistentVolumeClaim:
      claimName: my-pvc-name

volumeMounts:
  - name: my-data
    mountPath: /home/jovyan/data

这里有个坑——权限问题。我曾经挂载 PVC 后,发现 Notebook 里无法写入文件。查了半天,原来是 PVC 的访问模式设成了 ReadOnlyMany。正确的做法是用 ReadWriteOnce,这样你的 Notebook 才能读写。

小技巧:如果你有多个 Notebook 需要共享数据,可以用 ReadWriteMany 模式的 PVC。但要注意,不是所有存储类都支持这个模式,得先问问你们的运维同学。

4.4 完整创建流程示例

好了,咱们把上面三步串起来,走一遍完整的创建流程:

  1. 点「+ New Notebook」,填名字 demo-notebook
  2. 选镜像 jupyter-tensorflow-full:latest
  3. 在 CPU 配置里,Requests 填 1,Limits 填 2
  4. 内存 Requests 填 4Gi,Limits 填 8Gi
  5. 如果需要 GPU,勾选「Use GPU」,选 1 块
  6. 在 Data Volumes 里,点「Add Volume」,选之前创建的 PVC,挂载到 /home/jovyan/work
  7. 点「Launch」,等 2 分钟

等状态变绿后,点「Connect」,浏览器就会打开 Jupyter 界面。你在里面写代码、跑模型,所有数据都会保存在 PVC 里,下次打开还在。

嗯,这一章的内容就到这儿。Notebook 管理说白了就是这三板斧:创建实例、配资源、挂数据卷。你多练几次,自然就熟了。


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