huawei-cloudnative / firmament

The Firmament cluster scheduling platform
http://www.firmament.io
Apache License 2.0
19 stars 9 forks source link

Support max-allowed Pods for nodes #3

Open islinwb opened 6 years ago

islinwb commented 6 years ago

xref:

m1093782566 commented 6 years ago

/cc @shivramsrivastava

islinwb commented 6 years ago

@shivramsrivastava The PR's ready.

islinwb commented 6 years ago

@shivramsrivastava PTAL

nrshrivatsan commented 6 years ago

TL;DR

Schedulers should be cognizant about

  1. Workload-Priority
  2. Predicates/Prerequisite for Workloads

Priority

Instead of a discrete logic of MAX permissible Pods on a Node, would you encourage us having a more condition tree based scheduling?

Node ---- HAS ----> Pods ---> have ---> Priority

Schedulers could honor Pod Priority [ P1, P2, P3 ] along-side maximum permissible number of Pods.

Scheduler ---> Node A ---> Spawn max `P1` Pods ----> Spaw max `P2` Pods

Predicate

Context

It's a good start to have a Rate-Limiting function for workload scheduling. However workloads in Production grade systems tend to have criteria like

Suggestion

If we abstract the Rate-limit to a be a type of Predicate for scheduling, we could have an elegant predicate-based posidon scheduling.

Reasons

@shivramsrivastava @m1093782566 @islinwb - RFC

deepak-vij commented 6 years ago

Thanks for your feedback. This is exactly we currently support as part of Poseidon/Firmament scheduler. Node Filtering (Hard Constraints) -> Priority/Scoring (Soft Constraints) -> Taints -> Volume dependency. We are about to incorporate max. pods/node capability to go along with all of the above. If this is what you meant.

nrshrivatsan commented 6 years ago

@deepak-vij thanks for the comment. Could I request for a few reference hyperlinks to the documentation for Hard & Soft constraints?

shivramsrivastava commented 6 years ago

@nrshrivatsan

1) Taints and Tolerations 2) Pod Level Affinity/Anti-Affinity 3) Node Level Affinity/Anti-Affinity

4) Volumes dependent workloads: We are currently working on this one, we support only few volumes types and only support pre-bound PVC's and do not support dynamic binding/storage classes. We will publish a document on this soon.

Can you please elaborate on the Rate-Limiting predicate? Are you suggesting to introduce Rate-Limiting for pods scheduling, as a part of predicate operation?

nrshrivatsan commented 6 years ago

@shivramsrivastava Love the links!

Rate Limiting