Generalize orchestrated container scheduling.
Currently the only container-based scheduled (where we schedule containers and not schedule jobs that launch containers) is the Kubernetes message queue based coexecution approach. On one hand, we have some intriguing applications TES and AWS Batch where we would like to schedule containers directly and on the other the MQ approach with Kuberentes can easily be generalized to not require the MQ (falling back to polling the way the Kubernetes job runner in Galaxy does). The goal of this work is to generalize the MQ Kubernetes approach into six approaches: - MQ + Kubernetes (the current recommendation) - Kubernetes w/polling API (a simpler Kubernetes approach that retains all the advantages of the Pulsar approach over the Kubernetes runner in Galaxy without requiring a MQ). - MQ + TES. - TES w/polling. - MQ + AWS Batch - AWS Batch w/polling. TES ---------- I've developed a client library for TES called pydantic-tes (https://github.com/jmchilton/pydantic-tes) - that should use validated models to communicate with a TES server and is tested against Funnel. It also distributes a pytest fixture that can build and launch funnel for writing automated tests and that works with tox and Github actions as demonstrated by the pydantic-tes CI. AWS Batch ---------- TODO: Sequential vs Parallel Container Execution ------------------------------------------- This work contains a generalization of the approach used in Kubernetes of co-execution of Pulsar and Biocontainers, but the model for TES and AWS Batch are more serial container executions - this runs, then that, then that, etc... In TES this is given as a list of "Executors" and AWS Batch has the idea of the job dependencies that I believe can capture this - but this will require a slightly alternative approach (probably simpler) than the K8S co-execution approach in which the containers wait on each other to write files in order to coordinate.
parent
87bd6722
No related branches found
No related tags found
Showing
- .gitignore 1 addition, 0 deletions.gitignore
- dev-requirements.txt 1 addition, 0 deletionsdev-requirements.txt
- docker/coexecutor/Dockerfile 1 addition, 1 deletiondocker/coexecutor/Dockerfile
- docs/containers.rst 138 additions, 0 deletionsdocs/containers.rst
- docs/gx_aws_deployment.plantuml.txt 41 additions, 0 deletionsdocs/gx_aws_deployment.plantuml.txt
- docs/gx_k8s_deployment.plantuml.txt 45 additions, 0 deletionsdocs/gx_k8s_deployment.plantuml.txt
- docs/image.Makefile 11 additions, 0 deletionsdocs/image.Makefile
- docs/index.rst 1 addition, 0 deletionsdocs/index.rst
- docs/plantuml_options.txt 51 additions, 0 deletionsdocs/plantuml_options.txt
- docs/plantuml_style.txt 9 additions, 0 deletionsdocs/plantuml_style.txt
- docs/pulsar_k8s_coexecution_deployment.plantuml.txt 56 additions, 0 deletionsdocs/pulsar_k8s_coexecution_deployment.plantuml.txt
- docs/pulsar_k8s_coexecution_mq_deployment.plantuml.txt 55 additions, 0 deletionsdocs/pulsar_k8s_coexecution_mq_deployment.plantuml.txt
- docs/pulsar_k8s_deployment.plantuml.txt 52 additions, 0 deletionsdocs/pulsar_k8s_deployment.plantuml.txt
- docs/pulsar_k8s_mq_deployment.plantuml.txt 52 additions, 0 deletionsdocs/pulsar_k8s_mq_deployment.plantuml.txt
- docs/pulsar_tes_coexecution_deployment.plantuml.txt 62 additions, 0 deletionsdocs/pulsar_tes_coexecution_deployment.plantuml.txt
- docs/pulsar_tes_coexecution_mq_deployment.plantuml.txt 61 additions, 0 deletionsdocs/pulsar_tes_coexecution_mq_deployment.plantuml.txt
- docs/pulsar_tes_deployment.plantuml.txt 50 additions, 0 deletionsdocs/pulsar_tes_deployment.plantuml.txt
- docs/pulsar_tes_mq_deployment.plantuml.txt 50 additions, 0 deletionsdocs/pulsar_tes_mq_deployment.plantuml.txt
- mypy.ini 3 additions, 0 deletionsmypy.ini
- pulsar/client/client.py 422 additions, 62 deletionspulsar/client/client.py
Loading
Please register or sign in to comment