记录一下JupyterHub on k8s中,关于Multiple Profiles的实现方式。
JupyterHub很重要的一点功能就是实现用户NoteBook环境的定制化,JupyterHub设计出Profiles的概念。
在目前版本的JupyterHub中,用户在完成身份认证后,可以选择多个Profiles,每个Profile定义了不同的资源类型,常见的资源有镜像image、CPU、Memory等。Hub通过不同的Spawner完成用户NoteBook的初始化。
在本例中,我们的JupyterHub是基于kubernetes部署,所以Spawner自然是KubeSpawner。
具体的操作很简单:
- 保证在hub镜像中安装KubeSpawner,路径在/usr/local/lib/python3.6/dist-packages,默认已经安装(一定要注意KubeSpawner的版本,不同版本配置项不同,也与JupyterHub可能不兼容!!血泪史)
2.JupyterHub on k8s一般基于Helm部署,修改Chart的配置文件values,在hub.extraConfig下新增,本例中我配置了两个镜像,并且显式配置Spawner,注意我的KubeSpawner的版本是0.9,配置项还是image_spec,0.10以上版本是image
hub:
extraConfig:
myConfig.py: |
c.JupyterHub.spawner_class = 'kubespawner.KubeSpawner'
c.KubeSpawner.profile_list = [
{
'display_name': 'Datascience enviroment',
'default': True,
'kubespawner_override': {
'image_spec': 'jupyter/datascience-notebook:0.1.2',
'cpu_limit': 8,
'mem_limit': '32G',
}
}, {
'display_name': 'DeepLearning enviroment',
'kubespawner_override': {
'image_spec': 'ufoym/deepo:0.1.5',
'cpu_limit': 4,
'mem_limit': '16G',
}
}
]
3.重启JupyterHub,相关命令不在赘述
4.验证
-
验证后出现Spawner选项
1576552680982.jpg -
选择Datascience enviroment
1576552702122.jpg -
选择DeepLearning enviroment(镜像不同,不支持中文,且不支持R)
1576552643999.jpg
总结:
配置上,主要是注意版本的问题,我在这里没留意这个问题,所以配置一直不生效,耽误了很多时间。
JupyterHub目前的Multiple Profiles实现的是用户自己选择env,事实上这不满足一些企业的需求,有两个问题:
- 配置项还是静态的,需要实现配置的动态化,可以灵活修改比如Profiles的配置。
2.分配资源的权限应该收回到管理员,而不是任由用户去自己选择,目前版本的JupyterHub还不支持这个功能,所以需要对JupyterHub做二次开发。我们将完善这部分功能,敬请期待!
更多JupyterHub的内容,请参考:
网友评论