Add support for dask-ctl
- Dominant language
- Python
- Stars
- 256
- Forks
- 150
- PR merge metrics
- No merged PRs in 30d
Description
As mentioned in #543 it would be really nice for `dask-jobqueue` to support `dask-ctl` for convenient cluster management. However from what I understand about HPC scheduling systems this may not be a trivial task.
Dask Control aims to allow users to create/list/scale/delete Dask clusters via the CLI and a Python API. Support for `dask-ctl` is implements on a per-cluster manager basis with the following tasks.
- It must be possible to delete a Cluster object without destroying the Dask cluster
- It must be possible to list all running clusters
- It must be possible to create a new instance of the Cluster object that represents an existing cluster
The main challenges here are around moving the state out of the Cluster object into a place that it can be retrieved later. On platforms like Kubernetes or the Cloud much of the state can be serialised into tags/labels on the various tasks, but I'm not sure how many HPC systems support this kind of metadata storage.
The other challenge is how to discover clusters. On Kubernetes for example we set a tag on all resources that marks it as being created by `dask-ctl` and stores an ID that can be used to retrieve the metadata. Again I'm not sure how flexible HPC schedulers are at being able to tag/label jobs with arbitrary metadata.
The last thing that maybe a blocker is that the Dask cluster must always run the scheduler remotely, it cannot be within the local (or login node) Python process. I'm not sure how that affects things here.
I'm keen to see this happen, and if folks have thoughts on how this can be implemented I'd be keen to hear.
Contributor guide
Assessment
This issue has not been assessed yet.