New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discussion: Alternate containerization strategies for workers #2037
Comments
Having basically done this exercise to get nomad-atc (https://github.com/nomad-ci/nomad-atc) going, I'm happy to give notes on what a new, more abstract interface might look like. Probably the biggest thing is removing everything related to scheduling. No more calls to try to find the worker for a container, etc. Basically the interface should just ask for a container and the concrete implementation should do all that finding. One interest and deep interface is the Volume abstraction. It is hit during execution and ATC also has scheduling expectations around that as it decides if it needs to stream the volume to the new location. All that needs to be behind a more abstract interface. |
@evanphx Yeah, there's a lot of fuzzy boundaries in the responsibility of ATCs and workers, and a lot of scheduling context within the ATC. The ATC currently cares more deeply than it should about which worker containers and volumes live on; the "random" scheduling strategy helps this a bit, but there's a lot of steps to getting a worker which you've identified. Regarding the domain the ATC and workers: A good starting point for me is looking at the existing Regarding scheduling: The important bits that the scheduling and worker selection aspects really cover are: As we define the clear interface between the ATC and workers, and reduce the amount that the ATC cares about the specifics of the workload to run, the closer we can get to offloading the scheduling concerns from the ATC as well. As a first pass, I think its safe a multi-host container orchestrator to be a single "worker" for now, and use that to drive out the worker client's responsibilities. |
Some work on this has already begun. Closing this in favor of #3695 |
A Modest Proposal
With the consolidation of some worker operations to a new worker component (for #1959), it makes sense to start treating workers as a separate interface which encapsulates a great deal more than just registration.
Currently we treat workers as "a registered Garden and BaggageClaim" (from an architectural standpoint), rather than a separate "thing which can create containers and volumes". This new "worker" component will eventually be handling GC of containers and volumes, so it will need to know at least how to delete containers and volumes... which opens the door to this:
For now lets stick to the topic of Containers.
There have been a lot of conversations and suggestions around how to better deploy Concourse on, and leverage K8s, Nomad, and other container orchestration technologies, rather than deploying workers to containers and (yo dawg) create containers in Garden inside those containers.
Here's some terms for the types of containers Concourse creates, just to start off with a common vernacular:
image_resource
)Hopefully with some discussion we can come to a collective agreement about what types of "work to be done" should be abstracted by the worker, the interface a worker should have for containerization, and the options for various containerization "strategies" beyond Garden.
The text was updated successfully, but these errors were encountered: