4. Notebook 管理:创建 Jupyter Notebook 实例、配置 CPU/GPU 与内存资源、挂载 PVC 数据卷
各位好,我是老张。今天咱们聊聊 Kubeflow 里最常用的功能——Notebook 管理。
说实话,我刚开始接触 Kubeflow 时,最头疼的就是 Notebook 这块。明明在本地跑得好好的代码,一上平台就各种报错。后来才发现,不是代码的问题,是资源没配对,数据卷没挂好。
这一章,我就把 Notebook 管理的三个核心操作掰开揉碎了讲:创建实例、配置资源、挂载数据卷。你跟着走一遍,基本就能上手了。
核心知识点一览:
- 创建 Jupyter Notebook 实例的完整流程
- CPU、GPU、内存的配置策略与避坑指南
- PVC 数据卷的挂载原理与实操
4.1 创建 Jupyter Notebook 实例
进入 Kubeflow Dashboard 后,左侧导航栏找到 Notebooks,点进去。你会看到一个「+ New Notebook」按钮,别犹豫,点它。
创建实例其实就三步:
- 填名字——给你的 Notebook 起个名,比如
zhang-san-notebook。注意,名字只能用英文小写、数字和横杠,别加什么中文或特殊符号,不然创建时会报错。 - 选镜像——Kubeflow 默认提供了几个镜像,比如 TensorFlow 2.x、PyTorch、R 语言等。我个人习惯用
jupyter-tensorflow-full,因为它预装了大部分常用库,省得我后面再 pip install。 - 配工作区——这里可以指定一个 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,数据就能保存下来。
操作流程是这样的:
- 先创建 PVC——在 Kubeflow Dashboard 的「Volumes」页面,点「+ New Volume」。填名字、大小(比如 10Gi)、存储类(一般用默认的 standard)。
- 再挂载到 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 完整创建流程示例
好了,咱们把上面三步串起来,走一遍完整的创建流程:
- 点「+ New Notebook」,填名字
demo-notebook - 选镜像
jupyter-tensorflow-full:latest - 在 CPU 配置里,Requests 填 1,Limits 填 2
- 内存 Requests 填 4Gi,Limits 填 8Gi
- 如果需要 GPU,勾选「Use GPU」,选 1 块
- 在 Data Volumes 里,点「Add Volume」,选之前创建的 PVC,挂载到
/home/jovyan/work - 点「Launch」,等 2 分钟
等状态变绿后,点「Connect」,浏览器就会打开 Jupyter 界面。你在里面写代码、跑模型,所有数据都会保存在 PVC 里,下次打开还在。
嗯,这一章的内容就到这儿。Notebook 管理说白了就是这三板斧:创建实例、配资源、挂数据卷。你多练几次,自然就熟了。
公众号:蓝海资料掘金营,微信deep3321