【问题标题】:Jupyterhub SwarmSpawner select worker nodeJupyterhub SwarmSpawner 选择工作节点
【发布时间】:2021-11-14 20:39:14
【问题描述】:

我设置了一个包含多个工作节点的 docker swarm。
我当前使用 SwarmSpawner 的 Jupyterhub 设置工作正常,我能够在生成图像之前基于用户选择的图像部署单用户 docker 图像,在我的 jupyterhub_config.py 中使用 _options_form_default
我现在想要的是让用户能够选择他想在其上生成他的单用户 JupyterHub 映像的 swarm 工作节点名称(主机名),因为我们的工作节点具有不同类型的硬件规格(GPU、RAM、处理器等)并且用户提前知道他想使用的主机的名称。
是否可以确定生成图像的节点?

例如,我当前的 swarm 有 1 个主节点:“master”和 3 个工作节点:“node1”、“node2”、“node3”(这些是它们的主机名,因为它出现在输出的 HOSTNAME 列中主节点上的命令docker node ls)。

所以我想要的是,如下图所示,用户可以在下拉列表中选择他们想要在其上生成 jupyterhub 映像的 swarm 工作节点主机名,并提出如下问题:“选择服务器名称”。

【问题讨论】:

    标签: docker jupyter-notebook docker-swarm jupyterhub


    【解决方案1】:

    好的,所以我实际上想出了如何做到这一点。
    这是我jupyterhub_config.py中的相关部分:

    class CustomFormSpawner(SwarmSpawner):
    
        # Shows frontend form to user for host selection
        # The option values should correspond to the hostnames
        # that appear in the `docker node ls` command output
        def _options_form_default(self):
            return """
            <label for="hostname">Select your desired host</label>
            <select name="hostname" size="1">
                <option value="node1">node1 - GPU: RTX 2070 / CPU: 40</option>
                <option value="node2">node2 - GPU: GTX 1080 / CPU: 32</option>
            </select>
            """
    
        # Retrieve the selected choice and set the swarm placement constraints
        def options_from_form(self, formdata):
            options = {}
            options['hostname'] = formdata['hostname']
            hostname = ''.join(formdata['hostname'])
            self.extra_placement_spec = { 'constraints' : ['node.hostname==' + hostname] }
            return options
    
    c.JupyterHub.spawner_class = CustomFormSpawner
    

    【讨论】:

      猜你喜欢
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      相关资源
      最近更新 更多