Commit Graph

1235 Commits

Author SHA1 Message Date
mantuliu
e1e07e34e3 Improve performance of method haveOverlap
Signed-off-by: mantuliu <240951888@qq.com>
2023-02-21 16:50:10 +08:00
Yoon Park
c6276cc2ab Fix typo at most_allocated_test.go 2023-02-21 10:32:40 +09:00
Kubernetes Prow Robot
77af0be42f
Merge pull request #115519 from sanposhiho/move-metric-recorder
cleanup(scheduler): move metricRecorder to metrics package
2023-02-16 03:57:38 -08:00
Kensei Nakada
aa7b1766e5 cleanup(scheduler): move metricRecorder to metrics package 2023-02-16 07:27:08 +00:00
Kubernetes Prow Robot
fdc117a6dd
Merge pull request #114887 from binacs/binacs/simplify-pickOneNodeForPreemption
cleanup: simplify pickOneNodeForPreemption in preemption
2023-02-14 14:25:51 -08:00
Kubernetes Prow Robot
a0878eb715
Merge pull request #115709 from yoongon/feature/default-binder-testnode
Use predefined variable instead of duplicated string
2023-02-13 14:53:49 -08:00
kidddddddddddddddddddddd
f5a69ffda9
feature(scheduler): won't run Score if PreScore returned a Skip status (#115652)
* allow preScore to return skip status to skip running the corresponding score extension

* add test case for all skipped

* add test case for select host

* update plugin status

* skip score when all plugins are skipped

* update
2023-02-13 14:53:29 -08:00
Yoon
a3405f35b4 Use predefined variable instead of duplicated string 2023-02-12 20:50:39 +09:00
Kensei Nakada
4f7717842c feature(scheduler): implement plugin_evaluation_total metric 2023-02-04 07:21:03 +00:00
Chris Henzie
dbc7d8ded0 feat: support preemption for pods using ReadWriteOncePod PVCs
PVCs using the ReadWriteOncePod access mode can only be referenced by a
single pod. When a pod is scheduled that uses a ReadWriteOncePod PVC,
return "Unschedulable" if the PVC is already in-use in the cluster.

To support preemption, the "VolumeRestrictions" scheduler plugin
computes cycle state during the PreFilter phase. This cycle state
contains the number of references to the ReadWriteOncePod PVCs used by
the pod-to-be-scheduled.

During scheduler simulation (AddPod and RemovePod), we add and remove
reference counts from the cycle state if they use any of these
ReadWriteOncePod PVCs.

In the Filter phase, the scheduler checks if there are any PVC reference
conflicts, and returns "Unschedulable" if there is a conflict.

This is a required feature for the ReadWriteOncePod beta. See for more context:
https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/2485-read-write-once-pod-pv-access-mode#beta
2023-01-30 10:59:22 -08:00
BinacsLee
b3af95cb8a cleanup: simplify pickOneNodeForPreemption in preemption 2023-01-29 19:55:43 +08:00
Sunny Song
5e2f12e943 Fix nil pointer error in nodevolumelimits csi logging 2023-01-25 09:37:46 -08:00
Patrick Ohly
bc6c7fa912 logging: fix names of keys
The stricter checking with the upcoming logcheck v0.4.1 pointed out these names
which don't comply with our recommendations in
https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/migration-to-structured-logging.md#name-arguments.
2023-01-23 14:24:29 +01:00
Kubernetes Prow Robot
7b1b8d5734
Merge pull request #114889 from sanposhiho/skip/inter-pod-affinity
feature(InterPodAffinity): return Skip in PreFilter
2023-01-18 20:36:35 -08:00
Kensei Nakada
3b20a007ed feature(InterPodAffinity): return Skip in PreFilter 2023-01-19 01:24:18 +00:00
Kubernetes Prow Robot
98da10e4f2
Merge pull request #115052 from kidddddddddddddddddddddd/fix/volume_zone
fix volume_zone, iterate all topologyLabels when check node
2023-01-18 10:54:46 -08:00
Kubernetes Prow Robot
f16e62ae0c
Merge pull request #114897 from kidddddddddddddddddddddd/volumebinding
feature(volumebinding): return Skip in PreFilter
2023-01-16 23:38:32 -08:00
kidddddddddddddddddddddd
2ba4c00b3c hasAnyNodeConstraint 2023-01-14 15:29:54 +08:00
Kubernetes Prow Robot
eabb70833a
Merge pull request #114896 from kidddddddddddddddddddddd/volume_zone
feature(volume_zone): return Skip in PreFilter
2023-01-13 23:14:13 -08:00
Kubernetes Prow Robot
3a8e2e399b
Merge pull request #114393 from danielvegamyhre/myfeature
Option to ignore existing pods' preferred inter-pod affinities if the incoming pod has no preferred inter-pod affinities
2023-01-13 17:28:15 -08:00
Daniel Vega-Myhre
41817b1888 optionally ignore preferred terms of existing pods unless incoming pod
has inter-pod affinities
2023-01-13 23:15:53 +00:00
Michal Wozniak
437179afc3 Do not include scheduler name in the preemption event message 2023-01-11 09:32:21 +01:00
Kubernetes Prow Robot
1d6ae20301
Merge pull request #114798 from kerthcet/cleanup/code-refactor
Code refactor for readability in `RunFilterPlugins`
2023-01-09 17:31:12 -08:00
Kubernetes Prow Robot
1e3946ce9d
Merge pull request #114923 from mimowo/do-not-leak-pod-name-in-event
Adjust preemption event message to do not include preemptor pod metadata
2023-01-09 13:51:28 -08:00
Kubernetes Prow Robot
eb7fd7f51c
Merge pull request #114914 from mimowo/do-not-leak-pod-name
Adjust DisruptionTarget condition message to do not include preemptor pod metadata
2023-01-09 11:15:40 -08:00
Michal Wozniak
f79a34d267 Do not leak cross namespace pod metadata in preemption events 2023-01-09 18:30:19 +01:00
Michal Wozniak
bdf58ce2eb Adjust DisruptionTarget condition message to do not include preemptor metadata 2023-01-09 12:22:19 +01:00
kidddddddddddddddddddddd
733d5695f2 always run filter in test 2023-01-08 11:13:16 +08:00
kidddddddddddddddddddddd
5411c05460 save state data for reserve 2023-01-08 10:49:35 +08:00
kidddddddddddddddddddddd
0abdf6abc2 revert check in filter 2023-01-07 22:30:16 +08:00
kidddddddddddddddddddddd
059d520537 return skip 2023-01-07 21:58:54 +08:00
kidddddddddddddddddddddd
de7c8db7cb return skip 2023-01-07 21:48:30 +08:00
Kensei Nakada
570c2d7036 cleanup(nodeaffinity): remove impossible scenario from test cases 2023-01-07 08:46:35 +00:00
Kante Yin
2ceadfe885 Code refactor for readability
Signed-off-by: Kante Yin <kerthcet@gmail.com>
2023-01-07 11:31:46 +08:00
Kubernetes Prow Robot
c549b59983
Merge pull request #114125 from sanposhiho/skip-reimplementation
feature(scheduler): won't run Filter if PreFilter returned a Skip status
2023-01-06 02:25:59 -08:00
Kubernetes Prow Robot
bd43394467
Merge pull request #114623 from Huang-Wei/feat/smart-preemption-identification
Enhanced logic to identify eligible preemption node
2023-01-06 00:23:59 -08:00
Kensei Nakada
e5b536755f feature(scheduler): won't run Filter if PreFilter returned a Skip status 2023-01-06 07:38:15 +00:00
Wei Huang
9b64025f36
rename 'PreemptionByKubeScheduler' to 'PreemptionByScheduler' 2023-01-05 10:31:57 -08:00
Wei Huang
91742e2393
Enhanced logic to identify eligible preemption node 2023-01-05 10:31:57 -08:00
Kante Yin
2c205e291d Distinguish unschedulable with unresolvable in scheduler
Before, in RunPostFilterPlugins, we didn't distinguish between unschedulable and unresolvable
because we only have one postFilterPlugin by default, now, we have at least two, we should
make sure that once a postFilterPlugin returns unresolvable, we'll return directly

Signed-off-by: Kante Yin <kerthcet@gmail.com>
2023-01-05 16:59:19 +08:00
Kante Yin
49e7e80999 Modify the return type of RunFilterPlugins to *Status
Before, the return type of RunFilterPlugins is a Map, but considering we'll return immediately
once we met unsuccessful status, this is not necessary.

Signed-off-by: Kante Yin <kerthcet@gmail.com>
2023-01-03 14:33:58 +08:00
Kubernetes Prow Robot
3a5829044c
Merge pull request #114098 from kidddddddddddddddddddddd/feat/pv_list
Optimize volumebinding by moving PV list calls to PreFilter
2022-12-22 10:11:37 -08:00
Kubernetes Prow Robot
419e0ec3d2
Merge pull request #114390 from tangwz/improve_NodeResourcesFit_replace_small_maps_with_slices
Improve performance of NodeResourcesFit scoring
2022-12-22 06:57:26 -08:00
kidddddddddddddddddddddd
27c5c0a16d pv_list to prefilter 2022-12-22 14:59:41 +08:00
Kubernetes Prow Robot
70c28f3e12
Merge pull request #114486 from kerthcet/cleanup/make-preemption-more-readable
Make handling scheduleResult more readable
2022-12-21 15:01:25 -08:00
Kante Yin
c8908716ee Make handling scheduleResult more readable
Signed-off-by: Kante Yin <kerthcet@gmail.com>
2022-12-22 01:22:34 +08:00
tangwz
a4ab559ba4 Improve performance of NodeResourcesFit scoring
Signed-off-by: tangwz <tangwz.com@gmail.com>
2022-12-21 23:23:47 +08:00
Kubernetes Prow Robot
a3ca5fd2c8
Merge pull request #114456 from kidddddddddddddddddddddd/status_with_error
return error message when calling status.Message()
2022-12-19 11:09:43 -08:00
kidddddddddddddddddddddd
e789beb213 errMsg 2022-12-19 23:52:06 +08:00
Jordan Liggitt
78cb3862f1
Fix indentation/spacing in comments to render correctly in godoc 2022-12-17 23:27:38 -05:00
Kubernetes Prow Robot
94fd106a17
Merge pull request #110453 from claudiubelu/unittests-4
unittests: Fixes unit tests for Windows (part 4)
2022-12-16 06:16:16 -08:00
Wei Huang
0aecf6b3d5
Fix a regression that scheduler always go through all Filter plugins
The correct behavior is to stop upon the first Filter failure.
2022-12-15 12:02:27 -08:00
Kubernetes Prow Robot
c2b5457dfa
Merge pull request #109877 from yibozhuang/local-pv-prefilter-result
scheduler volumebinding: leverage PreFilterResult for bound local PVs
2022-12-13 14:53:34 -08:00
Kubernetes Prow Robot
dc1e77143f
Merge pull request #114082 from kidddddddddddddddddddddd/refactor_handleSchedulingFailure
pass status to handleSchedulingFailure
2022-12-12 22:05:34 -08:00
kidddddddddddddddddddddd
6ca62eb2cb refactor 2022-12-13 11:36:12 +08:00
Kubernetes Prow Robot
c80b03fee8
Merge pull request #113499 from kerthcet/cleanup/map-empty-judgement
Fix: resourceToWeightMap will never be nil here
2022-12-12 00:15:33 -08:00
Kubernetes Prow Robot
a800f1e0c0
Merge pull request #114216 from alculquicondor/avoid-serialization
Avoid serialization of maps when log level < 10
2022-12-10 07:54:24 -08:00
kidddddddddddddddddddddd
9e0a7c7ee7 add pre_filter for volume_zone 2022-12-03 02:11:04 +08:00
Aldo Culquicondor
b62541fe84
Avoid serialization of maps when log level < 10
Change-Id: If264c26ae599602d5b4919301f011c2095d706ee
2022-11-30 12:53:52 -05:00
Claudiu Belu
4dc7a260ec unittests: Fixes unit tests for Windows (part 4)
Currently, there are some unit tests that are failing on Windows due to
various reasons:

- paths not properly joined (filepath.Join should be used).
- files not closed, which means that they cannot be removed / renamed.
- time.Now() is not as precise on Windows, which means that 2
  consecutive calls may return the same timestamp.
2022-11-29 16:32:26 +00:00
Wei Huang
a731a44596
Fix an accuracy issue of scheduler_pending_pods metric 2022-11-21 21:33:16 -08:00
Yibo Zhuang
380c7f248e scheduler volumebinding: leverage PreFilterResult
This change will leverage the new PreFilterResult
to reduce down the list of eligible nodes for pod
using Bound Local PVs during PreFilter stage so
that only the node(s) which local PV node affinity
matches will be cosnidered in subsequent scheduling
stages.

Today, the NodeAffinity check is done during Filter
which means all nodes will be considered even though
there may be a large number of nodes that are not
eligible due to not matching the pod's bound local
PV(s)' node affinity requirement. Here we can
reduce down the node list in PreFilter to ensure that
during Filter we are only considering the reduced
list and thus can provide a more clear message to
users when node(s) are not available for scheduling
since the list only contains relevant nodes.

If error is encountered (e.g. PV cache read error) or
if node list reduction cannot be done (e.g. pod uses
no local PVs), then we will still proceed to consider
all nodes for the rest of scheduling stages.

Signed-off-by: Yibo Zhuang <yibzhuang@gmail.com>
2022-11-17 21:37:24 -08:00
Kubernetes Prow Robot
d1c0171aed
Merge pull request #111023 from pohly/dynamic-resource-allocation
dynamic resource allocation
2022-11-11 16:21:56 -08:00
Patrick Ohly
d2ff210c20 scheduler: add dynamic resource allocation plugin
The plugin handles the interaction with ResourceClaims that are referenced by a
Pod.
2022-11-11 21:58:03 +01:00
Jan Safranek
5b284a50b7 Revert "Remove references to openstack and cinder"
This reverts commit 9bbf01bae9.
2022-11-10 18:25:30 +01:00
kerthcet
7b7da83a8a Fix: resourceToWeightMap will never be nil
Use len() instead of telling whether it's nil
Add tests to guarantee that when resourceToWeightMap is nil, scheduler will not crash

Signed-off-by: kerthcet <kerthcet@gmail.com>
2022-11-10 14:07:02 +08:00
Kubernetes Prow Robot
c84e920a48
Merge pull request #113786 from sanposhiho/revert-prefilter-skip
Revert "feature(scheduler): won't run Filter if PreFilter returned a Skip status"
2022-11-09 10:08:13 -08:00
Kensei Nakada
f3868abfed Revert "feature(scheduler): won't run Filter if PreFilter returned a Skip status"
This reverts commit 786be73b4b.
2022-11-09 11:55:33 +00:00
Michal Wozniak
b3e9d8ef4c Cleanup the default_preemption_test by indexing the potential victim pods 2022-11-09 10:26:08 +01:00
Michal Wozniak
c803892bd8 Enable the feature into beta 2022-11-09 09:02:40 +01:00
Kubernetes Prow Robot
2b7b5245ea
Merge pull request #112637 from sanposhiho/pre-filter-skip
feature(scheduler): won't run Filter if PreFilter returned a Skip status
2022-11-08 06:16:37 -08:00
Kensei Nakada
786be73b4b feature(scheduler): won't run Filter if PreFilter returned a Skip status 2022-11-07 23:47:48 +00:00
Wei Huang
0b27f25252
PreEnqueue implementation
- Add PreEnqueuePlugin to Scheduler Framework
- Implement PreEnqueuePlugin in scheduler queue
- Implementation of SchedulingGates plugin
- Metrics
2022-11-07 14:02:58 -08:00
Wei Huang
2de75d92bf
API, Codegen, UT for PreEnqueue extension point 2022-11-07 14:02:57 -08:00
Kubernetes Prow Robot
fce1fbec29
Merge pull request #113528 from iyear/remove-useless-set
scheduler/framework: remove useless SetFailedPlugin
2022-11-07 06:52:16 -08:00
Abirdcfly
bf8570029e
chore(scheduler): cleanup some minor issues in testing 2022-11-03 09:07:28 +08:00
iyear
a62f0c3b9f scheduler/framework: remove useless SetFailedPlugin
Signed-off-by: iyear <ljyngup@gmail.com>
2022-11-02 10:42:52 +08:00
Michal Wozniak
fea883687f SSA to add pod failure conditions - ready for review 2022-10-27 18:21:33 +02:00
Kubernetes Prow Robot
8305358630
Merge pull request #108494 from sanposhiho/RunScorePlugins-return-type
change framework.RunScorePlugins to return slice organized by node
2022-10-20 08:57:02 -07:00
sanposhiho
cbf1ea5e68 change framework.RunScorePlugins to return slice organized by node 2022-10-20 01:04:38 +00:00
Kubernetes Prow Robot
ca17d9ba2b
Merge pull request #113127 from tangwz/parallel_preemption
Do pod preemption in parallel.
2022-10-19 07:23:01 -07:00
tangwz
480ae2a7c1 Do pod preemption in parallel. 2022-10-19 09:28:53 +08:00
Kubernetes Prow Robot
424a98ccc2
Merge pull request #109662 from astraw99/fix-prebind-pvc-update
Replace `DeepEqual` to `Diff` compare on scheduler-binding
2022-10-18 11:29:18 -07:00
Kubernetes Prow Robot
521fbd7e6a
Merge pull request #112521 from yuanchen8911/profile-config
Add a scheduler profile level parameter percentageOfNodesToScore
2022-10-17 11:09:06 -07:00
SataQiu
ba925a8393 scheduler: remove unused constant DefaultBindTimeoutSeconds from VolumeBinding plugin 2022-10-17 17:25:59 +08:00
Yuan Chen
7297f48f12 Add profile level percentageOfNodesToScore
Fix conversion errors

Changed the order

update

update

fix manaul coversions

keep the global parameter for backward compatibility

Address Wei's comments

Fix an error

Fix issues

Add unit tests for validation

Fix a comment

Address comments

Update comments

fix verifiation errors

Add tests for scheme_test.go

Convert percentageOfNodesToScore to pointer

Fix errors

Resolve conflicts

Fix testing errors

Address Wei's comments

Revert IntPtr to Int changes

Address comments

Not overrite percentageOfNodesToScore

Fix a bug

Fix a bug

change errs to err

Fix a nit

Remove duplication

Address comments

Fix lint warning

Fix an issue

Update comments

Clean up

Address comments

Revert changes to defaults

fix unit test error

Update

Fix tests

Use default PluginConfigs
2022-10-14 13:01:06 -07:00
kidddddddddddddddddddddd
b901ef0f68 changes in test files 2022-10-12 22:11:04 +08:00
kidddddddddddddddddddddd
121d24cfc7 changes in non-test files 2022-10-12 21:09:55 +08:00
kidddddddddddddddddddddd
1eb9d42c3f function changes 2022-10-12 21:00:48 +08:00
Kubernetes Prow Robot
27344212ce
Merge pull request #112827 from SataQiu/clean-scheduler-20221003
scheduler: cleanup the unused event types about Service
2022-10-04 16:24:00 -07:00
Kubernetes Prow Robot
6ece379ad6
Merge pull request #112658 from BinacsLee/binacs/cleanup-reuse-code-logic-in-nodeinfo
cleanup: reuse code logic in NodeInfo.AddPod & NodeInfo.RemovePod
2022-10-03 08:46:14 -07:00
BinacsLee
b616d41c25 cleanup: reuse code logic in NodeInfo.AddPod & NodeInfo.RemovePod 2022-10-03 21:10:50 +08:00
SataQiu
8640d17760 scheduler: cleanup the unused event types about Service 2022-10-03 16:30:38 +08:00
kerthcet
55dcde737d typo fixed
Signed-off-by: kerthcet <kerthcet@gmail.com>
2022-09-29 18:08:15 +08:00
SataQiu
7ab0c56f71 scheduler: remove unused plugin name ServiceAffinity 2022-09-28 17:25:18 +08:00
Kubernetes Prow Robot
5fe1450ba7
Merge pull request #112028 from dengyufeng2206/test2508
fix several typos under scheduler framework
2022-09-22 15:18:53 -07:00
Kubernetes Prow Robot
9cd59bfc38
Merge pull request #112660 from kerthcet/cleanup/change-approver
Make autoscaling team the autoscaler_contract package approver
2022-09-22 12:51:22 -07:00
kerthcet
2679d998d3 Make autoscaling team as the autoscaler_contract package approver
Signed-off-by: kerthcet <kerthcet@gmail.com>
2022-09-22 23:18:12 +08:00
Sergey Kanzhelev
ad7199a9da remove podOverhead feature gate as a feature is now GA since 1.24 2022-09-19 19:25:16 +00:00
Kubernetes Prow Robot
3e5e5cc7ee
Merge pull request #112357 from SataQiu/deprecated-20220907
kube-scheduler: add taints filtering logic consistent with TaintToleration plugin for PodTopologySpread plugin
2022-09-16 18:14:27 -07:00