自定义用户管理#

本节介绍 JupyterHub 上用户及其权限的管理。

清理用户 Pod#

当用户使用 JupyterHub 部署时,他们会可靠地手动关闭他们的服务器吗?可能不会。因此,拥有一个系统来关闭在配置的空闲时间段或最大时间后处于非活动状态的服务器可能是一个好主意。JupyterHub 使用 jupyterhub-idle-culler 来实现这一点。

当用户服务器被关闭时,用户将不得不下次访问时重新启动他们的服务器。他们之前会话的内存状态将丢失,但打开的笔记本会定期保存到 .ipynb_checkpoints 文件夹中,通常不会导致工作丢失。

注意

有关 jupyterhub-idle-culler 工作原理以及您可能希望在用户服务器上设置的其他配置的更多详细信息,请参阅 工作原理文档

要禁用清理,请将以下内容放入 config.yaml

cull:
  enabled: false

默认清理配置可以在 Helm 图表的 values.yaml 文件中查看,位于 cull 下。Helm 图表的配置对应于传递给 jupyterhub-idle-culler 的命令行标志。这些标志和其他标志的完整文档可以在 jupyterhub-idle-culler 的文档 中找到。

为了帮助 jupyterhub-idle-culler 清理用户服务器,您应该考虑配置用户服务器的内核管理器来清理空闲内核,否则这些内核会使用户服务器报告自身处于活动状态,而这正是 jupyterhub-idle-culler 考虑的一部分。为此,您可以通过 singleuser.extraFiles 将配置文件挂载到用户服务器。

singleuser:
  extraFiles:
    # jupyter_notebook_config reference: https://jupyter-notebook.pythonlang.cn/en/stable/config.html
    jupyter_notebook_config.json:
      mountPath: /etc/jupyter/jupyter_notebook_config.json
      # data is a YAML structure here but will be rendered to JSON file as our
      # file extension is ".json".
      data:
        MappingKernelManager:
          # cull_idle_timeout: timeout (in seconds) after which an idle kernel is
          # considered ready to be culled
          cull_idle_timeout: 1200 # default: 0

          # cull_interval: the interval (in seconds) on which to check for idle
          # kernels exceeding the cull timeout value
          cull_interval: 120 # default: 300

          # cull_connected: whether to consider culling kernels which have one
          # or more connections
          cull_connected: true # default: false

          # cull_busy: whether to consider culling kernels which are currently
          # busy running some code
          cull_busy: false # default: false

注意

虽然 JupyterHub 会自动运行清理过程,但这并不能替代监视您的集群以确保资源按预期使用。

管理员用户#

JupyterHub 有 管理员用户 的概念,他们拥有特殊权限。他们可以启动/停止其他用户的服务器,并可以选择访问用户的笔记本。他们将在控制面板中看到一个新的管理员按钮,该按钮将带他们到管理员面板,在那里他们可以执行所有这些操作。

您可以在 config.yaml 中指定管理员用户的列表

hub:
  config:
    Authenticator:
      admin_users:
        - adminuser1
        - adminuser2

默认情况下,管理员可以访问用户的笔记本。如果您希望禁用此功能,请在 config.yaml 中使用以下内容

hub:
  config:
    JupyterHub:
      admin_access: false

验证用户#

有关在 JupyterHub 中验证用户的详细信息,请参阅 身份验证指南