-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
[RFC] docs: add design, roadmap, bof notes #160
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Design: distributed mode (work in progress) | ||
|
||
## master | ||
- Stateless. | ||
-- No etcd. | ||
-- The orchestrator (Kubernetes) is expected to restart master container on failure. | ||
|
||
## worker | ||
- Workers could be started by passing the master host information. | ||
-- A worker connect to the master and tell its workerID. | ||
-- TODO: how to connect to the master with multiple container replicas? | ||
|
||
## scheduling | ||
- The master asks the workers: "are you able to reproduce the cachekey for this operation?", and the master become aware of `map[op][]workerID`. | ||
-- This map does not need to be 100% accurate. So we have many opportunity for optimization. | ||
-- The master could ask cpu/mem/io stat as well and utilize such information for better scheduling. | ||
- The master schedules a vertex job to a worker which is likely to have the most numbers of the dependee-vertice caches. | ||
-- If none have it, choose randomly | ||
|
||
## scalability | ||
- We may be able to use gossip (or something like that) for improving scalability of the cache map | ||
|
||
## credential | ||
- Because the worker can need credentials at any time, and it does not have any open session with the client, it needs to ask the master who does have an open session with the client | ||
|
||
## local file | ||
- we need to find the same worker that already received the content from client the first time. | ||
- OR always sync to manager: manager can do the work of a worker (with caveat of constraints) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# BuildKit Roadmap (tentative) | ||
|
||
This document roughly describes the roadmap of the BuildKit project. | ||
We will be using GitHub Projects and GitHub Milestones for more detailed roadmap. | ||
|
||
## Task 1 (2018Q1) | ||
- Implement all features needed for replacing the legacy builder backend of moby-engine | ||
|
||
- Test, test, and test (help needed!) | ||
|
||
- Integrate BuildKit to moby-engine as an experimental builder backend. (`moby-engine --experimental --build-driver buildkit`) | ||
-- Probably for Linux only | ||
|
||
## Task 2 (2018Q2-Q3) | ||
|
||
- Promote BuildKit to the default moby-engine build backend | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I guess this task requires integrating the containerd image store to moby-engine first? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn't it possible to export images to the current engine image storage using There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @dnephin It is, but it has quite a significant performance penalty because data needs to be copied. @AkihiroSuda I agree. Should it get very delayed we could consider implementing the snapshotter dependency with moby storage drivers but let's try the correct way first. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @mlaventure Do you know when we will integrate the containerd image store & snapshot subsystem to Moby-engine? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The plan is still that work starts early next year. The snapshotters will be available to use before then. Something to consider is that having integration with the containerd snapshotter does not necessarily mean the storage drivers will not continue to be used. I don't know what the plan will be but it might be wise to plan on using the snapshotters and having a way to export into an existing Docker storage driver. |
||
-- At this time, BuildKit API and LLB spec do not need to be stabilized | ||
|
||
## Task 3 (2018Q1-Q2) | ||
|
||
- Implement basic distributed mode | ||
|
||
## Task 4 (2018-2019) | ||
|
||
-- Stabilize BuildKit API and LLB spec | ||
|
||
## Task 5 (2018-2019) | ||
- Optimize distributed mode, especially on scalability of the distributed cache map (gossip protocol or something like that?) | ||
|
||
## Task 6+ | ||
- Stabilize distributed mode | ||
- Add more features | ||
|
||
- - - | ||
|
||
TODO: DAG-ify these roadmap tasks in more pretty format | ||
|
||
<!-- e.g. PERT chart, but we should NOT be too much bureaucratic :P --> | ||
|
||
|
||
``` | ||
1 ----->2 | ||
| | ||
v | ||
3 ----->4---+ | ||
\ | | ||
\ v | ||
+--->5-->6.. | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😍