Commit Graph

507 Commits

Author SHA1 Message Date
draveness
3d74da4d53 feat(scheduler): implement node affinity as score plugin 2019-10-17 17:02:10 +08:00
Kubernetes Prow Robot
3719fcdffa
Merge pull request #82072 from draveness/feature/use-context-instead-of-channel
feat(scheduler): use context in scheduler package
2019-10-17 01:46:39 -07:00
Abdullah Gharaibeh
17a6a7914c make sure filters are executed when no predicates configured 2019-10-16 21:27:57 -04:00
draveness
47a6c5b693 feat(scheduler): use context in the scheduler package
+ Use context instead of stopCh
+ Add context to the scheduling framework interface
2019-10-17 09:03:55 +08:00
Kubernetes Prow Robot
0e2383df15
Merge pull request #83893 from draveness/feature/node-prefer-avoid-pods
feat(scheduler): implement NodePreferAvoidPods as score plugin
2019-10-16 11:37:30 -07:00
Kubernetes Prow Robot
1552ba6b00
Merge pull request #83569 from liu-cong/framework-metrics
Add metrics for scheduler framework.
2019-10-15 23:05:28 -07:00
Cong Liu
da30a00f9a Add metrics for scheduler framework. 2019-10-14 20:26:03 -04:00
draveness
2d7044a556 feat(scheduler): implement NodePreferAvoidPods as score plugin 2019-10-14 21:21:24 +08:00
notpad
4ff7251026 [migration phase 1] VolumeZoneChecker as filter plugin 2019-10-14 07:45:40 +08:00
Kubernetes Prow Robot
5a427e8704
Merge pull request #83659 from wgliang/scheduler-v2/pod-fits-host-ports
[migration phase 1] PodFitsHostPorts as filter plugin
2019-10-13 11:18:35 -07:00
Kubernetes Prow Robot
dd5cb6426d
Merge pull request #83849 from draveness/feature/node-locality-as-score-plugin
feat: implement imagelocality as a score plugin
2019-10-13 06:36:35 -07:00
draveness
6f6618fc5d feat: implement imagelocality as a score plugin 2019-10-13 19:58:21 +08:00
Guoliang Wang
78be6a628d [migration phase 1] PodFitsHostPorts as filter plugin 2019-10-13 19:47:26 +08:00
Guoliang Wang
4ca3d9ca48 [migration phase 1] PodFitsResources as framework plugin 2019-10-13 12:02:24 +08:00
Guoliang Wang
0a1808a570 [migration phase 1] PodMatchNodeSelector/NodAffinity as filter plugin 2019-10-12 14:49:55 +08:00
notpad
9e426a6be1 [migration phase 1] NoDiskConflict as filter plugin 2019-10-12 08:00:44 +08:00
Kubernetes Prow Robot
1e5a9f3ff4
Merge pull request #83522 from draveness/feature/expand-node-score-range
feat(scheduler): expand node score range to [0, 100]
2019-10-11 16:20:38 -07:00
Kubernetes Prow Robot
77b86c4adf
Merge pull request #83764 from cofyc/fix83635
[migration phase 1] Implement CheckVolumeBinding as a filter plugin
2019-10-11 09:29:52 -07:00
Kubernetes Prow Robot
c980000176
Merge pull request #83663 from draveness/feature/add-shared-informers-factory
feat(scheduler): expose SharedInformerFactory to the framework handle
2019-10-11 09:29:40 -07:00
draveness
1f52bd80d1 feat(scheduler): expand node score range to [0, 100] 2019-10-11 23:43:09 +08:00
Yecheng Fu
e8795562f9 [migration phase 1] Implement CheckVolumeBinding as a filter plugin 2019-10-11 20:35:11 +08:00
Guoliang Wang
b9167334ee [migration phase 1] PodFitsHost as filter plugin 2019-10-11 17:05:04 +08:00
Kubernetes Prow Robot
c1a735c642
Merge pull request #83601 from ahg-g/ahg-migration-priority
Implemented taints and tolerations priority function as a Score plugin
2019-10-11 00:05:50 -07:00
draveness
ee4dec65b5 feat(scheduler): expose SharedInformerFactory to the framework handle 2019-10-11 10:23:21 +08:00
Kubernetes Prow Robot
a5e6ac0a95
Merge pull request #83694 from ahg-g/ahg-adv-config
[migration phase 1] Make scheduler cache, volume binder and listers available when registering default plugins
2019-10-10 19:00:21 -07:00
Abdullah Gharaibeh
7429b0fe86 Implemented taints and tolerations priority function as a Score plugin 2019-10-10 17:49:40 -04:00
Cong Liu
085852160a Add per-pod metrics for scheduler. 2019-10-10 16:58:21 -04:00
Abdullah Gharaibeh
456df97745 made scheduler cache and volume binder available when instantiating factories for default plugins 2019-10-10 16:21:29 -04:00
Abdullah Gharaibeh
36a0f8a03f remove the no-op plugin that we used as an example plugin in default registry 2019-10-09 12:30:08 -04:00
Kubernetes Prow Robot
0110db3a14
Merge pull request #83537 from ahg-g/ahg-metadata
Added PredicateMetadata and PriorityMetadata to framework's CycleState
2019-10-08 18:37:50 -07:00
Abdullah Gharaibeh
1751c251d8 Addressed comments 2019-10-08 16:13:13 -04:00
Abdullah Gharaibeh
bc550b0896 Added PredicateMetadata and PriorityMetadata as CycleState to the framework 2019-10-07 22:25:08 -04:00
draveness
ab3f55720b feat(scheduler): expose kubernetes client in framework handle 2019-10-06 10:31:49 +08:00
Abdullah Gharaibeh
66386fdf49 Added the first predicate as a filter plugin: PodToleratesNodeTaints. 2019-10-05 08:43:17 -04:00
Kubernetes Prow Robot
4e1214c149
Merge pull request #83506 from alculquicondor/cleanup/framework_new
Cleanup reflection usage in framework creation
2019-10-04 16:31:44 -07:00
Abdullah Gharaibeh
043166f54b Modified the name of the Extensions method in the scheduler's framework. 2019-10-04 15:53:06 -04:00
Aldo Culquicondor
984c4e8cc2 Cleanup reflection usage in framework creation
Signed-off-by: Aldo Culquicondor <acondor@google.com>
2019-10-04 12:40:21 -04:00
draveness
c73ff9749b feat(scheduler): rename PluginContext to CycleState 2019-10-04 17:30:36 +08:00
Kubernetes Prow Robot
3317805652
Merge pull request #83243 from draveness/feature/use-reflect-in-new-registry
feat(scheduler): use reflect to reduce the similar pattern
2019-10-03 14:39:54 -07:00
draveness
5e84257133 feat(scheduler): use reflect to reduce the similar pattern 2019-10-03 10:46:19 +08:00
draveness
9769d49bb5 feat(scheduler): remove MaxPriority in the scheduler api 2019-10-02 11:24:25 +08:00
Kubernetes Prow Robot
dc0013a506
Merge pull request #83365 from notpad/feature/83244
A consistent interface for plugin extended functionality
2019-10-01 13:01:11 -07:00
Wei Huang
cbdb4e3fdb
refactor scheduler extender related API
- move extender related API from pkg/scheduler/api to pkg/scheduler/apis/extender/v1

- alias extenderv1 to pkg/scheduler/apis/extender/v1

- use NodeScore and NodeScoreList in non-extender logic
2019-10-01 09:51:24 -07:00
notpad
fc55e74741 A consistent interface for plugin extended functionality 2019-10-01 23:59:48 +08:00
Abdullah Gharaibeh
6120fe9b11 Convert predicates/priorities configurations to a framework plugin configs. 2019-09-30 10:36:52 -04:00
Kubernetes Prow Robot
5e4abfb946
Merge pull request #83042 from draveness/feature/remove-score-with-normalize-extension
feat(scheduler): consolidate ScoreWithNormalizePlugin into ScorePlugin
2019-09-26 10:49:20 -07:00
Kubernetes Prow Robot
b34eede084
Merge pull request #83080 from ahg-g/ahg-config-layer
Mapping Layer - 1. A mapping from predicates/priorities to plugin configuration
2019-09-25 22:05:20 -07:00
draveness
314ec4e504 feat(scheduler): consolidate ScoreWithNormalizePlugin into ScorePlugin 2019-09-26 10:19:06 +08:00
Abdullah Gharaibeh
a57ac0725a A mapping from predicates/priorities to pluing configuration.
This PR only implements the mapping, but does not use it. A followup PR will use this mapping to produce a framework configuration that redirects mapped predicates/priorites to be exected as plugins.
2019-09-25 22:10:30 -04:00
Abdullah Gharaibeh
37b9e6d1ea An interface that allows pre-filter plugins to update their pre-calculated.
This is needed to allow efficient preemption simulations: during preemption, we remove/add pods from each node before running the filter plugins again to evaluate whether removing/adding specific pods will allow the incoming pod to be scheduled on the node. Instead of calling prefilter again, we should allow the plugin to do incremental update to its pre-computed state.
2019-09-24 13:01:50 -04:00
Abdullah Gharaibeh
641317bdde Updated ContextData and PluginContext with Clone methods.
This is necessary to be able to clone PluginContext during preemption.
2019-09-23 14:34:40 -04:00
Abdullah Gharaibeh
89f936f6ac Modified the Filter interface to pass in nodeinfo instead of node name.
This is necessary to support preemption, which relies on passing modified nodeinfo objects to the filters to simulate evicting lower-priority pods.
2019-09-18 17:27:33 -04:00
yiyang5055
bbc4931ab8 fix error package name and rename struct 2019-09-17 09:11:26 +08:00
Abdullah Gharaibeh
3174d9c847 Added a noop plugin to make sure we have the dependencies worked out for the default registry of the scheduler framework. 2019-09-13 13:36:35 -04:00
Kubernetes Prow Robot
3fd8962bd1
Merge pull request #82483 from everpeace/fix-scheduler-pluginconfig-initialization
The correct PluginConfig.Args is not passed to the corresponding PluginFactory in kube-scheduler when multiple PluginConfig items are defined
2019-09-11 21:22:49 -07:00
Abdullah Gharaibeh
54ac023a53 Scheduler PreBind plugins are currently allowed to return Unschedulable status, which should not according to the KEP and comments. 2019-09-11 14:03:18 -04:00
Shingo Omura
439a6825e7 need to use local variable so that pluginNameToConfig map can keep correct contents
because the type of PluginConfig.Args is not pointer.

It also fixed framework_test so that it can test PluginConfig initialization.
2019-09-11 16:56:22 +09:00
Kubernetes Prow Robot
b33968972b
Merge pull request #82034 from alculquicondor/feat/unschedulable_unresolvable
[Framework] Add UnschedulableAndUnresolvable status code
2019-08-30 11:20:57 -07:00
Aldo Culquicondor
3c1f8a8c4e [Framework] Add UnschedulableAndUnresolvable status code
The status can be used by (Pre)Filter plugins to indicate that
preemption wouldn't change the decision of the filter.

Signed-off-by: Aldo Culquicondor <acondor@google.com>
2019-08-28 10:10:47 -04:00
Jun Gong
6324285f3b Add a helper function to decode scheduler plugin args 2019-08-27 13:11:52 +08:00
draveness
ffef11f768 feat(scheduler): move node info snapshot out of internal package 2019-08-23 22:32:16 +08:00
draveness
af2e0428f6 feat: use PreBind instead of Prebind in the scheduling framework 2019-08-23 02:09:19 +08:00
draveness
03f0934c80 feat: use PostBind instead of Postbind in the scheduling framework 2019-08-23 02:09:12 +08:00
draveness
f3816fb757 feat: use PreFilter instead of Prefilter in the scheduling framework 2019-08-23 02:09:00 +08:00
Cong Liu
e50a24d64c Move RunNormalizeScorePlugins and ApplyScoreWeights into RunScorePlugins; Also add unit tests for RunScorePlugins. 2019-08-20 13:18:32 -04:00
draveness
d3cc73965a feat: use schedulerapi.MaxPriority instead of hard-coded int 2019-08-14 19:16:41 +08:00
draveness
9fb0df5096 feat(scheduler): return error when score is out of range 2019-08-14 19:16:41 +08:00
Kubernetes Prow Robot
1906650d92
Merge pull request #80901 from draveness/feature/use-map-instead-of-array
feat: use named array instead of array in normalizing score
2019-08-14 03:28:25 -07:00
draveness
aa5f9fda52 feat: use named array instead of score array in normalizing score 2019-08-08 08:19:49 +08:00
Kubernetes Prow Robot
a07992436d
Merge pull request #80412 from hex108/concurrent_read_write
Add doc that plugins in bind cycle should not use scheduler NodeInfoSnapshot
2019-08-06 21:05:18 -07:00
draveness
22bac3084a fix: use %q instead of %v in scheduling framework 2019-08-06 00:01:25 +08:00
draveness
859cac0595 fix: update run filter plugin for consistency 2019-08-02 10:23:43 +08:00
draveness
feb64858aa feat: implement "post-filter" extension point for scheduling framework 2019-08-02 10:12:54 +08:00
Ted Yu
5efeda3718 Return early in ApplyScoreWeights if there are no scores 2019-08-01 04:59:18 -07:00
Cong Liu
34373662d3 Add NormalizeScore extension point for scheduler framework. 2019-07-30 20:02:13 -04:00
Kubernetes Prow Robot
dc515bb12e
Merge pull request #80469 from draveness/feature/add-unit-tests-to-framework-status
fix: return empty string when status is nil
2019-07-24 18:08:05 -07:00
Kubernetes Prow Robot
acd597dbac
Merge pull request #80305 from hex108/cleanup_score_plugin
Precheck score plugins' weight when initializing
2019-07-24 15:20:05 -07:00
draveness
7549c53a38 fix: return empty string when status is nil 2019-07-24 20:55:11 +08:00
Jun Gong
a3ed664246 Add doc that plugins in binding cycle should not use NodeInfoSnapshot() 2019-07-23 20:25:39 +08:00
Jun Gong
2dc5cf8c43 Set score plugin's weight to 1 if it is not set 2019-07-18 22:35:34 +08:00
Jun Gong
66347b516c Precheck score plugins' weight when initializing 2019-07-18 21:19:21 +08:00
Youbing Li
7f9dd949e0 The implementation of Filter extension for the new framework 2019-07-17 03:28:30 -04:00
Abdullah Gharaibeh
a80425bd23 Fixed build files. 2019-07-16 10:24:10 -04:00
Abdullah Gharaibeh
73704f1b8e Use error channel to capture first error. 2019-07-16 10:00:42 -04:00
Abdullah Gharaibeh
c54c4d1962 Score plugin for the scheduling framework. 2019-07-16 09:38:37 -04:00
Chun Chen
e04f03d3cb Fix flaky test TestBindPlugin 2019-07-15 23:36:06 +08:00
Chun Chen
3bb1a081ab Revert "Revert "Add Bind extension point of the scheduling framework""
This reverts commit b8950dab50.
2019-07-15 23:36:02 +08:00
draveness
b8950dab50 Revert "Add Bind extension point of the scheduling framework" 2019-06-22 22:52:57 +08:00
Chun Chen
b339c0a8bf Add Bind extension point of the scheduling framework 2019-06-20 15:56:01 +08:00
Abdullah Gharaibeh
a61a437ef2 prefilter extension point implementation. 2019-06-10 17:01:50 -04:00
Kubernetes Prow Robot
bb475c4a64
Merge pull request #77567 from wgliang/features/scheduling-framework-post-bind
Add Post-bind extension point to the scheduling framework
2019-05-29 17:24:20 -07:00
JieJhih Jhang
823111c0fe use iota instead assign value to constants 2019-05-24 18:45:01 +08:00
Guoliang Wang
20f9c9940e Add Post-bind extension point to the scheduling framework 2019-05-19 18:12:16 +08:00
JieJhih Jhang
0734d1debb handle nil extension points 2019-05-18 07:24:27 +08:00
JieJhih Jhang
2cd5fc54a1 add scheduling framework configuration
update bazel build

fix get plugin config method

initialize only needed plugins

fix unit test

fix import duplicate package

update bazel

add docstrings

add weight field to plugin

add plugin to v1alpha1

add plugins at appropriate extension points

remove todo statement

fix import package file path

set plugin json schema

add plugin unit test to option

initial plugin in test integration

initialize only needed plugins

update bazel

rename func

change plugins needed logic

remove v1 alias

change the comment

fix alias shorter

remove blank line

change docstrings

fix map bool to struct

add some docstrings

add unreserve plugin

fix docstrings

move variable inside the for loop

make if else statement cleaner

remove plugin config from reserve plugin unit test

add plugin config and reduce unnecessary options for unit test

update bazel

fix race condition

fix permit plugin integration

change plugins to be pointer

change weight to int32

fix package alias

initial queue sort plugin

rename unreserve plugin

redesign plugin struct

update docstrings

check queue sort plugin amount

fix error message

fix condition

change plugin struct

add disabled plugin for unit test

fix docstrings

handle nil plugin set
2019-05-18 06:30:28 +08:00
draveness
d60bccc6a4 feat: implement "queue-sort" extension point for scheduling framework 2019-05-15 09:40:15 +08:00
Abdullah Gharaibeh
98de316436 Implement the permit extension point in scheduler. 2019-05-10 12:42:04 -04:00
Kubernetes Prow Robot
b9ccdd2824
Merge pull request #77598 from danielqsj/unreserve
Add Un-reserve extension point for the scheduling framework
2019-05-09 23:37:57 -07:00
danielqsj
997648a923 Add Un-reserve extension point for the scheduling framework 2019-05-10 13:19:22 +08:00
Abdullah Gharaibeh
7b127311a4 Make thread-safe the prebind callback of stateful plugin in scheduler framework. 2019-05-08 22:19:21 -04:00
Han Kang
51992d61a0 Revert "Add Un-reserve extension point for the scheduling framework"
This reverts commit 8b5182581a.
2019-05-07 21:17:29 -07:00
danielqsj
8b5182581a Add Un-reserve extension point for the scheduling framework 2019-05-07 14:51:58 +08:00
Onur Satici
1fccb933c6 make example plugins conform with the PluginFactory type 2019-05-03 21:05:52 +01:00
Onur Satici
78f7027f66 fix scheduler plugin example 2019-05-03 11:56:00 +01:00
Bobby (Babak) Salamat
83828bcb2d autogenerated files 2019-04-29 16:40:56 -07:00
Bobby (Babak) Salamat
54afaf2326 Add framework and registry for the scheduling framework 2019-04-29 16:40:56 -07:00
Bobby (Babak) Salamat
404dc1ed79 Update scheduler framework plugins to align with the latest changes to the framework design 2019-04-29 16:40:56 -07:00