JupyterHub Multiple Profiles实现

作者: 北邮郭大宝 | 来源:发表于2019-12-18 09:00 被阅读0次

记录一下JupyterHub on k8s中,关于Multiple Profiles的实现方式。

JupyterHub很重要的一点功能就是实现用户NoteBook环境的定制化,JupyterHub设计出Profiles的概念。

在目前版本的JupyterHub中,用户在完成身份认证后,可以选择多个Profiles,每个Profile定义了不同的资源类型,常见的资源有镜像image、CPU、Memory等。Hub通过不同的Spawner完成用户NoteBook的初始化。

在本例中,我们的JupyterHub是基于kubernetes部署,所以Spawner自然是KubeSpawner。

具体的操作很简单:

  1. 保证在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,事实上这不满足一些企业的需求,有两个问题:

  1. 配置项还是静态的,需要实现配置的动态化,可以灵活修改比如Profiles的配置。

2.分配资源的权限应该收回到管理员,而不是任由用户去自己选择,目前版本的JupyterHub还不支持这个功能,所以需要对JupyterHub做二次开发。我们将完善这部分功能,敬请期待!

更多JupyterHub的内容,请参考:

相关文章

网友评论

    本文标题:JupyterHub Multiple Profiles实现

    本文链接:https://www.haomeiwen.com/subject/nqlsnctx.html