我设置了一个具有多个工作节点的 docker swarm。
我当前使用 SwarmSpawner 进行的 Jupyterhub 设置工作正常,我能够在生成图像之前根据用户选择的图像部署单用户 docker 图像,在我的
_options_form_default
中使用 jupyterhub_config.py
。我当前的集群有 1 个主节点:“master”和 3 个工作节点:“node1”、“node2”、“node3”(这些是它们的主机名,如显示在输出的
HOSTNAME
列中)在主节点上命令 docker node ls
)。
所以我想要的是,正如下图所示,用户可以通过下拉菜单选择他们想要在其上生成 jupyterhub 映像的 swarm 工作节点主机名,并提出如下问题:“选择服务器名字”。
好的,所以我实际上知道了如何做到这一点。
这是我的
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
我还想部署 Jupyterhub SwarmSpawner。我的要求和你的类似。可以分享一下你的配置文件吗?