mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-13 13:55:41 +00:00
Add scheduler monopic architecture diagram
This commit is contained in:
parent
3208100375
commit
11f9198941
BIN
contrib/mesos/docs/scheduler.monopic
Normal file
BIN
contrib/mesos/docs/scheduler.monopic
Normal file
Binary file not shown.
@ -16,3 +16,58 @@ limitations under the License.
|
|||||||
|
|
||||||
// Package scheduler implements the Kubernetes Mesos scheduler.
|
// Package scheduler implements the Kubernetes Mesos scheduler.
|
||||||
package scheduler
|
package scheduler
|
||||||
|
|
||||||
|
// Created from contrib/mesos/docs/scheduler.monopic:
|
||||||
|
//
|
||||||
|
// ┌───────────────────────────────────────────────────────────────────────┐
|
||||||
|
// │ ┌───────────────────────────────────────┐ ┌─┴──────────────────────┐ ┌───────────────┐
|
||||||
|
// ┌─────▼─────┐ │Queuer │ Await() │ podUpdates │ │ │
|
||||||
|
// │ updates │ │- Yield() *api.Pod ├──pod CRUD ─▶ (queue.HistoricalFIFO) ◀──reflector──▶pods ListWatch ├──apiserver──▶
|
||||||
|
// └─────▲─────┘ │- Requeue(pod)/Dequeue(id)/Reoffer(pod)│ events │ │ │ │
|
||||||
|
// │ └───────────────────▲───────────────────┘ └───────────┬────────────┘ └───────────────┘
|
||||||
|
// │ │ │
|
||||||
|
// │ │ │
|
||||||
|
// └───────────────┐┌───────────────────▲────────────────────▲─────────────────────┐ └───────────────────────┐
|
||||||
|
// ││ │ │ │
|
||||||
|
// ┌───────────────────┼┼──────────────────────────────────────┐ │ ┌───────────────────┼────────────────┐ │
|
||||||
|
// ┌───────────▼──────────┐┌───────┴┴───────┐ ┌───────────────────┐ ┌──┴─┴─┴──────┐ ┌────────┴────────┐ ┌────▼────────▼─────────────┐
|
||||||
|
// │Binder (task launcher)││Deleter │ │PodReconciler │ │SchedulerLoop│ │ ErrorHandler │ │SchedulerAlgorithm │
|
||||||
|
// │- Bind(binding) ││- DeleteOne(pod)│ │- Reconcile(pod) │ │- Run() │ │- Error(pod, err)│ │- Schedule(pod) -> NodeName│
|
||||||
|
// │ ││ │◀──│ │ │ │──▶│ │ │ │
|
||||||
|
// │ ┌─────┐││ ┌─────┐ │ │ ┌─────┐ │ │ ┌─────┐ │ │ ┌─────┐ │ │┌─────┐ │
|
||||||
|
// └───────────────┤sched├┘└────┤sched├─────┘ └──────┤sched├───▲──┘ └───┤sched├───┘ └────┤sched├──────┘ └┤sched├────────────────────┘
|
||||||
|
// ├-│││-┴──────┴--││-┴────────────────┴--│--┴───┼──────────┴--│--┴────────────┴-│││-┴──────────┴-│││-┴─────┐ ┌──────────────────────┐
|
||||||
|
// │ │││ ││ │ │ │ │││ │││ │ │ │
|
||||||
|
// │ ││└───────────▼┼─────────────────────▼──────┼─────────────▼─────────────────▼┼┼──────────────┘││ │ │ A ──────────▶ B │
|
||||||
|
// │ │└─────────────┼────────────────────────────┼─────────────┼──────────────────▼┼───────────────┘│ │ │ │
|
||||||
|
// │ │ │ │ │ │└──────────┐ │ │ │ A has a reference │
|
||||||
|
// │ │ │ │ │ │ │ │ │ │ on B and calls B │
|
||||||
|
// │ │ │ ╲ │ │ │ ╱ │ │ │ ┌─▼─────▼──────┐│ │ │
|
||||||
|
// │ │ │ ╲ └┐ │ ┌┘ ╱ │ │ │ │PodScheduler()││ └──────────────────────┘
|
||||||
|
// │ │ │ ╲ │ │ │ ╱ │ │ │ └─┼─────┬──────┘│
|
||||||
|
// │ │ │ ╲ └┐ │ ┌┘ ╱ │ │ │ ┌─┼─────▼───────┴────────────────┐
|
||||||
|
// │┌▼────────────┐┌▼──────────┐┌─▼─▼─▼─▼─▼─┐┌───┴────────┐┌───▼───┐ ┌────▼───┐ │ │ podScheduler │
|
||||||
|
// ││LaunchTask(t)││KillTask(t)││sync.Mutex ││reconcile(t)││Tasks()│ │Offers()│ │ │ (e.g. fcfsPodScheduler) │
|
||||||
|
// │└──────┬──────┘└─────┬─────┘└───────────┘└────────▲───┘└───┬───┘ └────┬───┘ │ │ │
|
||||||
|
// │ │ │ │ │ │ │ │scheduleOne(pod, offers ...) │
|
||||||
|
// │ │ └──────────────────┐ │ ┌───▼────────────┐ │ │ │ ┌──────────────────────────┤
|
||||||
|
// │ └──────────────────────────────┐ │ │ │podtask.Registry│ │ │ │ │ allocationStrategy │
|
||||||
|
// │ │ │ │ └────────────────┘ │ │ └───┼────▶ - FitPredicate │
|
||||||
|
// │ │ │ │ │ │ │ - Procurement │
|
||||||
|
// │Scheduler │ └──────┐ │ │ └─────┴─────────┬────────────────┘
|
||||||
|
// └──────────────────────────────────────┼────────┼─┬│----┬──────────────────────┼─────────────────────────┘
|
||||||
|
// ┌──────────────────────────────────────┼────────┼─┤sched├──────────────────────┼─────────────────────────┐
|
||||||
|
// │Framework │ │ └─────┘ ┌────▼───┐ │
|
||||||
|
// │ ┌──────▼──────┐┌▼──────────┐ │Offers()│ │
|
||||||
|
// │ │LaunchTask(t)││KillTask(t)│ └────┬───┘ │
|
||||||
|
// │ └─────────┬───┘└──────┬────┘ ┌────────▼───────┐ │
|
||||||
|
// │implements: mesos-go/scheduler.Scheduler └───────────▼ │offers.Registry │ │
|
||||||
|
// │ │ └────────────────┘ │
|
||||||
|
// │ ┌─────────────────┐ ┌──▼─────────────┐ │
|
||||||
|
// └────────────────────────┤ ├───────┤ Mesos ├────────────────────────────────────┘
|
||||||
|
// │ TasksReconciler │ │ Scheduler │
|
||||||
|
// │ ├───────▶ Driver │
|
||||||
|
// └─────────────────┘ └────────┬───────┘
|
||||||
|
// │
|
||||||
|
// │
|
||||||
|
// ▼
|
||||||
|
Loading…
Reference in New Issue
Block a user