3.1.1 notebook(JupyterHub)
大多数项目的第一步是某种形式的原型设计和实验。Kubeflow用于原型设计和实验的工具是JupyterHub(https://jupyter.org/hub),这是一个多用户中心,可以生成、管理和代理单用户Jupyter notebook(https://oreil.ly/C4dtQ)的多个实例。Jupyter notebook支持整个计算过程:开发、记录和执行代码,以及交流结果。
要访问JupyterHub,请进入Kubeflow主页面并单击“Notebooks”按钮。在notebook页面,你可以连接到现有的服务器或创建一个新的服务器。
要创建一个新的服务器,你需要指定服务器名称和命名空间,选择一个镜像(从CPU优化、GPU优化或你可以创建的自定义镜像),并指定资源要求:CPU/内存、工作空间、数据卷、自定义配置等。一旦服务器被创建,你就可以连接到它并开始创建和编辑notebook。
为了让数据科学家在不离开notebook环境的情况下进行集群操作,Kubeflow在提供的notebook镜像中增加了kubectl(https://oreil.ly/i-PFC),以允许开发人员使用notebook来创建和管理Kubernetes资源。Jupyter notebook pod运行在一个特殊的服务账户default-editor下,它对以下Kubernetes资源有命名空间级别的权限:
·Pods
·Deployments
·Services
·Jobs
·TFJobs
·PyTorchJobs
你可以将这个账户绑定到一个自定义角色,用于限制/扩展notebook服务器的权限。这使得notebook开发人员可以在不离开notebook环境的情况下执行角色中许可的Kubernetes命令。例如,创建一个新的Kubernetes资源可以直接在Jupyter notebook中运行以下命令:
yaml文件的内容将决定创建什么资源。如果你不习惯编写Kubernetes资源,不用担心,Kubeflow Pipeline中包含创建资源的工具。
为了进一步增加Jupyter的功能,Kubeflow还在notebook中提供了对Pipeline和元数据管理等重要的Kubeflow组件的支持(见3.1.6节)。Jupyter notebook还可以直接加载分布式训练作业。