为多个 Jupyter Notebook pod 设置不同的资源

Posted

技术标签:

【中文标题】为多个 Jupyter Notebook pod 设置不同的资源【英文标题】:Setting different resources for multiple Jupyter Notebook pods 【发布时间】:2022-01-10 09:19:14 【问题描述】:

我最近在我们的 K8s 集群中托管了 Jupyterhub。我们将内存限制设置为 1GB,所以现在所有的 Jupyter 笔记本都采用这种配置。但是我们的笔记本是资源(内存和 CPU)密集型的,有些笔记本不是资源密集型的

那么,有没有办法为多个 jupyter pod 分配不同的资源?

我正在使用helm chart部署jupyterhub https://zero-to-jupyterhub.readthedocs.io/en/latest/jupyterhub/installation.html

【问题讨论】:

【参考方案1】:

如果您的 POD 由 DeploymentStateful set 管理,则没有其他选择。

要么为具有不同配置的多个 Jupiter 笔记本创建不同的不同部署,要么将每个笔记本部署为具有资源要求的不同 POD

我建议使用 VPA,它会自动扩展您的部署或有状态集并根据需要调整资源要求。

查看有关 VPA 的更多信息:https://cloud.google.com/kubernetes-engine/docs/concepts/verticalpodautoscaler

【讨论】:

【参考方案2】:

我们使用profiles 允许用户从不同大小的 pod 中进行选择。 Pod 都部署在大节点上,但用户可以选择是半节点还是全节点 Pod。

作为示例,我们构建了 daskhub 配置(完整规范 here):

daskhub:
  jupyterhub:
    singleuser:
      image:
      cpu:
        limit: 3.5
        guarantee: 3.5
      memory:
        limit: 22.5G
        guarantee: 22.5G
      profileList:
        - display_name: "default"
          description: "Default notebook size"
          default: true
        - display_name: "large"
          description: "Larger notebook allowance"
          kubespawner_override:
            cpu_limit: 7.0
            cpu_guarantee: 7.0
            mem_limit: 45G
            mem_guarantee: 45G

它们都在 8CPU / 52GB 节点上生成,但其中两个较小的 pod 将在同一个节点上运行(假设 2 个用户选择“默认”)。

【讨论】:

singleuser.profileList 选项看起来很有希望,将对其进行测试:) 这个解决方案对我有用,非常感谢?

以上是关于为多个 Jupyter Notebook pod 设置不同的资源的主要内容,如果未能解决你的问题,请参考以下文章

一日一技:如何从多个Jupyter Notebook中找到需要代码段

如何让 Jupyter Notebook 自动导入代码?

Jupyter Notebook配置多个kernel

Jupyter (IPython) Notebook 单元格中有多个 Audio 对象

如何一次运行多个 Spark 2.0 实例(在多个 Jupyter Notebook 中)?

Jupyter Notebook 如何让一个Cell 可以同时输出多个语句的值?