在 Olares 上部署 JupyterHub:搭建多用户 Notebook 协作环境实战指南
云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载JupyterHub 是开源的多用户 Jupyter Notebook 服务器可以让团队中每位成员拥有独立计算工作空间而无需在本地安装任何软件。本指南以 OlaresTerminus 开源个人云操作系统为运行平台完整演示 JupyterHub 的安装、管理员初始化、Notebook 服务器启动、JupyterLab 编程、用户管理以及通过 ConfigMap 自定义 Notebook 配置文件的全过程帮助你在自托管环境中搭建面向数据科学、研究与团队协作的多用户 Notebook 平台。JupyterHub 与 Olares为什么需要自托管多用户 NotebookJupyterHub 的核心设计目标是为多个用户同时提供隔离的计算环境每个用户登录后都会获得自己独立的 Notebook 服务器实例与工作空间互不干扰。在传统部署中你需要为每个使用者单独配置 Python 环境、依赖包和硬件资源而在 Olares 上JupyterHub 作为应用市场Market中的一个应用分发安装完成后即以容器化、多租户的方式运行在集群内用户通过浏览器即可访问无需关心底层环境。Olares 的集群底层是 Kubernetes这也决定了 JupyterHub 的部署方式与资源管理方式每个 Notebook 服务器实际对应一个动态创建的 Pod资源的保证值与上限值guarantee / limit直接映射为 Kubernetes 的资源配额。理解这一点有助于你后续通过配置文件精确控制每位用户的 CPU 与内存消耗。学习目标阅读并跟随本指南操作后你将掌握通过 Market 安装 JupyterHub 并设置管理员账户启动自己的 Notebook 服务器在 Jupyter Notebook 与 JupyterLab 中编写并运行代码以管理员身份添加、管理 JupyterHub 用户包括处理自注册用户通过 JupyterHub ConfigMap 自定义 Notebook 配置文件的镜像与资源限制。安装 JupyterHub安装入口位于 Olares 桌面环境的应用市场Market。市场模块在前端应用中由apps/packages/app/src/application/market.ts提供入口逻辑用户通过桌面 UI 即可完成应用的浏览、获取与安装操作。打开Market搜索 JupyterHub。点击获取Get然后点击安装Install。出现提示时设置以下环境变量JUPYTERHUB_ADMIN_USERNAME输入默认管理员账户的用户名。安装完成后需要使用完全相同的用户名注册并创建管理员密码。等待安装完成。安装过程会自动创建 JupyterHub 的部署、服务以及用于存放配置的 ConfigMap名为jupyterhub-config。:::info 环境变量JUPYTERHUB_ADMIN_USERNAME在安装阶段即被写入 JupyterHub 的配置管理员用户名会被“保留”下来。这意味着该用户名不可再被其他人占用但此时尚未绑定密码需要你在下一步主动激活。 :::设置管理员账户安装完成后管理员用户名已保留但尚无密码。要激活管理员账户请使用安装时输入的用户名完成一次注册从Launchpad打开 JupyterHub你会看到登录页面。点击注册Sign up进入账户创建页面。输入安装时指定的管理员用户名并设置密码然后点击创建用户Create User。例如如果你将JUPYTERHUB_ADMIN_USERNAME设置为olares则此处必须输入olares作为用户名——用户名不一致将无法与安装时保留的管理员身份匹配。返回登录页面使用管理员用户名和密码登录。登录后你会进入 JupyterHub 仪表板Dashboard从这里既可以启动自己的 Notebook 服务器也可以进入管理页面维护用户。启动和使用 Notebook 服务器启动 Notebook 服务器在仪表板中点击启动我的服务器Start My Server。选择一个 Notebook 配置文件然后点击启动Start。默认选项是基础环境Base Environment它提供最小化的纯 Python Jupyter 环境适合大多数用户。:::info 当你首次使用某个配置文件启动 Notebook 服务器时JupyterHub 需要拉取对应的 Notebook 镜像。这一步可能耗时数分钟具体取决于镜像大小与网络连接状况。若想换用其他镜像需要管理员先自定义 Notebook 配置文件再重新启动服务器。 :::等待服务器启动。服务器就绪后Jupyter Notebook 界面会自动打开。从技术原理看这里的“启动服务器”对应着 JupyterHub 的 KubeSpawner 逻辑Hub 根据所选配置文件中的镜像与资源参数在 Kubernetes 集群中动态创建一个用户 Pod。这也是配置文件中的 CPU / 内存参数能精确生效的根本原因。创建 Notebook在 Jupyter Notebook 界面中你可以创建新 Notebook、打开终端、上传文件以及处理现有文件。创建一个新 Notebook点击新建New然后选择Notebook。选择一个内核Kernel然后点击选择Select。一个新的 Notebook 将在当前工作区中打开。打开 JupyterLab 并编写代码JupyterLab 提供了更丰富的编程环境文件浏览器、多标签页、终端、Notebook 与扩展插件一应俱全。在 Jupyter Notebook 界面顶部导航栏中点击视图View打开 JupyterLabOpen JupyterLab。在 Launcher 中点击Notebook分类下的Python 3 (ipykernel)。Notebook 打开后在单元格中输入代码然后点击运行按钮play_arrow 图标或按Shift Enter执行。:::info Olares 应用生态中还有多个基于 JupyterLab 的预配置环境。例如 RNA Sequencing 应用便提供了一个内置scRNA_analysis_preprocessing.ipynb的 GPU 加速单细胞分析环境见 docs/use-cases/rna-sequencing.md可与 JupyterHub 的多用户场景互补使用。 :::返回 Hub要从 JupyterLab 返回 JupyterHub 仪表板点击文件FileHub 控制面板Hub Control Panel即可。管理用户作为管理员你可以控制谁能够使用 JupyterHub。官方推荐的工作流是先在管理Admin页面创建用户名然后让用户使用该确切用户名注册并自行设置密码。这样既能保证用户名的规范性又能避免出现“已注册却无法登录”的歧义状态。添加新用户在 JupyterHub 仪表板中前往管理Admin添加用户Add Users。输入新用户的用户名点击添加用户Add Users。让用户打开 JupyterHub点击注册Sign up并使用你添加的确切用户名创建密码。登录后用户即可启动自己的 Notebook 服务器且彼此之间工作空间相互隔离。添加自注册用户如果用户在你添加其用户名之前就自行注册他们可能会出现在一个“隐藏”的授权页面上。请注意在该页面上显示为已授权并不自动意味着他们可以登录并启动 Notebook 服务器——授权列表与可登录状态是两回事。要允许这类用户使用 JupyterHub在浏览器地址栏中将/hub/authorize附加到你的 JupyterHub URL 后访问。查看授权页面上显示的用户名。返回 JupyterHub 仪表板前往管理Admin添加用户Add Users。添加授权页面上显示的相同用户名。用户在管理页面被正式添加后即可使用他们此前注册的账户登录。这一机制的本质是JupyterHub 对已注册但未在授权列表中的用户默认不授予启动服务器的权限管理员通过/hub/authorize页面核对身份并补充授权从而保证集群资源只向可信用户开放。可选自定义 Notebook 配置文件每个 Notebook 配置文件都定义了用户启动 Notebook 服务器时使用的镜像和资源限制。大多数普通用户无需更改这些设置但管理员可以按需调整。:::warning GPU 加速暂不支持 Olares 上的 JupyterHub 目前不支持 Notebook 服务器的 GPU 加速请仅使用基于 CPU 的 Notebook 镜像。不要使用以cuda12-或cuda-为前缀的 CUDA 启用镜像标签。 :::默认配置文件及其资源限制如下配置文件CPU保证 / 限制内存保证 / 限制基础环境0.1 / 11 GB / 1 GB最小环境0.2 / 11 GB / 1 GB科学计算0.5 / 11 GB / 2 GB数据科学Python R1 / 12 GB / 2 GB深度学习TensorFlow2 / 42 GB / 4 GB大数据PySpark2 / 44 GB / 8 GB全 Spark完整2 / 44 GB / 8 GBR 环境1 / 22 GB / 4 GB上表中的“保证 / 限制”分别对应 Kubernetes 的 requests 与 limits保证值决定 Pod 调度与资源预留限制值则约束该用户最多能消耗的资源。例如“大数据PySpark”保证 2 核 4 GB、上限 4 核 8 GB适合需要较大堆内存与并行度的批处理任务。自定义步骤在Control Hub中前往浏览Browse然后选择 JupyterHub 项目。Control Hub 是 Olares 的可视化控制台其“浏览”视图以三列式工作负载资源导航展示应用与配置资源详见 docs/zh/manual/olares/controlhub/index.md。在Configmaps下选择jupyterhub-config点击详情面板右上角的编辑图标edit_square打开 YAML 编辑器。在 YAML 编辑器中找到c.KubeSpawner.profile_list。该配置项是 JupyterHub KubeSpawner 的标准配置入口profile_list中的每一项对应仪表板上的一个可选配置文件。定位你要修改的配置文件更新kubespawner_override下的值要更改 Notebook 镜像修改image该值必须是完整的镜像地址要更改资源限制修改cpu_guarantee、mem_guarantee、cpu_limit或mem_limit。一个典型的配置文件条目结构如下kubespawner_override: { image: docker.io/beclab/jupyter-base-notebook:notebook-7.0.6, cpu_guarantee: 0.1, mem_guarantee: 1G, cpu_limit: 1, mem_limit: 1G, }字段说明imageNotebook 服务器容器的完整镜像地址。更换时需确保新镜像为基于 CPU 的 Notebook 镜像。cpu_guaranteeCPU 保证值requests支持小数如0.1表示 0.1 核。cpu_limitCPU 上限limits整数或小数均可。mem_guarantee内存保证值使用字符串形式如1G。mem_limit内存上限同样使用字符串形式。点击确认Confirm保存更改。返回部署Deploymentsjupyterhub点击右侧面板中的重启Restart。等待状态图标变为绿色。更新后的配置文件设置会在用户为新启动的 Notebook 服务器选择该配置文件时生效——已经运行中的旧服务器不受影响。常见问题为什么我的 Notebook 服务器卡在 Pending 状态当集群没有足够的 CPU 或内存资源来启动服务器容器时Notebook 服务器可能长时间停留在Pending待定状态。作为管理员你可以停止未使用的 Notebook 服务器释放占用的集群资源如果所选配置文件的资源需求超过集群可提供的容量请自定义 Notebook 配置文件降低 guarantee / limit然后让用户重新启动服务器。从实现层面看Pending 状态意味着 Kubernetes 调度器无法为对应的用户 Pod 找到满足 requests 条件的节点因此持续等待资源。优先排查集群整体负载与闲置服务器即可快速定位。如何使用不同的 Notebook 镜像要使用不同的 Notebook 镜像管理员需要更新 JupyterHub ConfigMap 中对应配置文件的image值详细步骤见自定义 Notebook 配置文件。务必仅使用基于 CPU 的 Notebook 镜像因为 Notebook 服务器目前不支持 GPU 加速。可以使用 GPU 加速吗Olares 上的 JupyterHub 目前不支持 Notebook 服务器的 GPU 加速默认的 Notebook 配置文件全部使用基于 CPU 的镜像。不要使用以cuda12-或cuda-为前缀的 CUDA 启用镜像标签。如果你确实需要 GPU 计算可以评估 Olares 应用生态中其他预配置了 GPU 环境的方案如 RNA Sequencing 应用而非修改 JupyterHub 配置强行启用 CUDA 镜像。了解更多本文对应的英文原版指南见 docs/use-cases/jupyterhub.md涉及关键操作时可对照查阅管理 Olares 集群资源与 ConfigMap 的操作背景可参考 docs/zh/manual/olares/controlhub/index.md需要更完整的 JupyterHub 与 Kubernetes 部署原理可查阅 JupyterHub 官方文档与 “Zero to JupyterHub with Kubernetes” 指南外部链接见原文档 “Learn more” 一节。赞分享云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载相关推荐Olares 上部署 JupyterHub搭建自托管多用户 Notebook 协作环境Olares 上部署 JupyterHub搭建自托管多用户 Notebook 协作环境 JupyterHub 是开源的多用户 Jupyter Notebook云原生后端运维Bitnami JupyterHub Helm Chart 实战指南在 Kubernetes 上部署多用户 Jupyter Notebook 平台Bitnami JupyterHub Helm Chart 实战指南在 Kubernetes 上部署多用户 Jupyter Notebook 平台 Jupyt云原生容器编排JupyterHub实战手册从零构建多用户协作环境你是否正在为团队协作搭建统一的Jupyter环境而烦恼面对复杂的设置选项和安全性要求是否感到无从下手这份实战手册将带你一步步构建专业级的多用户Jupyte后端微服务上一篇Quasar SSR 客户端水合Client Side Hydration完全指南原理、常见不一致与排查实战下一篇SGLang 生产环境部署实战指南从单卡启动到 Kubernetes 多节点集群的完整落地创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Buzz 本地语音转文字完整指南:从一段录音到可编辑字幕只要几分钟

Buzz 本地语音转文字完整指南:从一段录音到可编辑字幕只要几分钟

Buzz 本地语音转文字完整指南:从一段录音到可编辑字幕只要几分钟 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz …

2026/10/16 2:41:55 阅读更多 →
第六章 SA8775P ISP深度解析:为什么汽车需要多摄像头ISP? ——从2.5Gpixel/s图像处理能力,到智能驾驶视觉感知完整链路?从2.5Gpixel/s到智能驾驶视觉链路全面拆解

第六章 SA8775P ISP深度解析:为什么汽车需要多摄像头ISP? ——从2.5Gpixel/s图像处理能力,到智能驾驶视觉感知完整链路?从2.5Gpixel/s到智能驾驶视觉链路全面拆解

第六章 SA8775P ISP深度解析:为什么汽车需要多摄像头ISP? ——从2.5Gpixel/s图像处理能力,到智能驾驶视觉感知完整链路 在前面章节中,我们已经分析了: CPU:负责系统调度和任务管理; GPU:负责图形渲染和多屏显示; NPU:负责AI模型推理; DDR:负责高速数据交换。 但是…

2026/10/16 2:40:55 阅读更多 →
pplx-decider 三大决策模式 choice / noul / score 详解:新手必懂的用法与示例

pplx-decider 三大决策模式 choice / noul / score 详解:新手必懂的用法与示例

【免费下载链接】pplx-decider-v1-27b 项目地址: https://ai.gitcode.com/hf_mirrors/perplexity-ai/pplx-decider-v1-27b 点击查看 免费下载 pplx-decider-v1-27b 是 Perplexity AI 开源的决策模型(基于 Qwen3.8-27B 微调),它不…

2026/10/16 2:40:55 阅读更多 →

最新新闻

Girvan-Newman算法实战:边介数计算与模块度优化详解

Girvan-Newman算法实战:边介数计算与模块度优化详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 4:26:19 阅读更多 →
网课听完就忘、笔记全是零散截图?2026年网课录音转文字工具实测横评:6款工具统一打分,附一套可复用的复习笔记整理法

网课听完就忘、笔记全是零散截图?2026年网课录音转文字工具实测横评:6款工具统一打分,附一套可复用的复习笔记整理法

一、先聊聊那个让人有点上火的场景线上课越上越多,回放越堆越厚,可真正落到笔记上的内容却没多少。老师语速快的时候,你一边暂停一边抄板书,抄完发现前半句讲了啥已经忘了。一节课两小时,来回暂停几十次,视…

2026/10/16 4:26:19 阅读更多 →
看病总记不住医生说的话?实测一套“诊室记录”完整方案,从录音到复诊清单一次讲清

看病总记不住医生说的话?实测一套“诊室记录”完整方案,从录音到复诊清单一次讲清

一、开篇:出了诊室门,医嘱就开始“模糊”你有没有过这种经历:排了两小时队,进诊室五分钟,医生一口气讲了病情、用药、忌口、复查时间,你一边点头一边拼命记,走出门却发现脑子里只剩一句“多喝水…

2026/10/16 4:26:19 阅读更多 →
GitHub图片不显示?从DNS解析到CDN的排查与修复指南

GitHub图片不显示?从DNS解析到CDN的排查与修复指南

写GitHub图片不显示,差不多是每个用开源项目的人都会撞上的事情。明明仓库文件都在,点开README却是一串裂图占位符,徽章全是叉,截图全白,那一刻真的会怀疑自己是不是把仓库改坏了。这篇文章把我这些年踩过的坑、排查过…

2026/10/16 4:26:19 阅读更多 →
MySQL安装全攻略:Windows与Linux多方式详解与踩坑指南

MySQL安装全攻略:Windows与Linux多方式详解与踩坑指南

第一次数据库作业,很多人卡住的不是SQL语句,而是第一步“把MySQL装起来、能连上、能跑通”。Windows和Linux的安装方式看着多,其实每种方式背后都对应不同的使用场景:有人只想赶紧交作业,有人想弄明白数据库服务是怎么…

2026/10/16 4:26:19 阅读更多 →
三相SVG静止无功发生器Simulink仿真模型:主电路与双闭环控制设计

三相SVG静止无功发生器Simulink仿真模型:主电路与双闭环控制设计

做无功补偿仿真这些年,SVG(静止无功发生器)一直是我觉得最值得研究的装置之一。这次分享的项目,就是基于MATLAB/Simulink的三相静止无功发生器仿真模型,主电路采用电压型桥式结构,除了完整的Simulink源文件…

2026/10/16 4:25:19 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →