Commit Graph

80 Commits

Author SHA1 Message Date
Ivan Shvedunov
d40a8f3279 Don't require failureDomains in PodAffinityChecker
failureDomains are only used for PreferredDuringScheduling pod
anti-affinity, which is ignored by PodAffinityChecker.
This unnecessary requirement was making it hard to move
PodAffinityChecker to GeneralPredicates because that would require
passing --failure-domains to both kubelet and kube-controller-manager.
2016-12-08 14:08:28 +03:00
Chao Xu
bcc783c594 run hack/update-all.sh 2016-11-23 15:53:09 -08:00
Chao Xu
f782aba56e plugin/scheduler 2016-11-23 15:53:09 -08:00
David Ashpole
9aca40dee6 revert #33218. dont need #36180. We only use diskpressure 2016-11-04 08:29:27 -07:00
Kubernetes Submit Queue
6ce128c4b1 Merge pull request #35606 from gmarek/scheduler
Automatic merge from submit-queue

Small cleanup of scheduler default algorithm provider

It's a no-op PR that just moves stuff around.
2016-10-28 06:06:11 -07:00
Janet Kuo
10aee82ae3 Rename PetSet API to StatefulSet 2016-10-27 17:25:10 -07:00
gmarek
fc8a771b1c Small cleanup of scheduler default algorithm provider 2016-10-26 10:50:15 +02:00
Mike Danese
df713b478c fix tests by declaring testdata 2016-10-21 17:32:32 -07:00
Mike Danese
3b6a067afc autogenerated 2016-10-21 17:32:32 -07:00
jayunit100
08cff0157d PredicateMetadata factory and optimization, Cleaned up some comments,
Comments addressed, Make emptyMetadataProducer a func to avoid casting,
FakeSvcLister: remove error return for len(svc)=0.  New test for
predicatePrecomp to make method semantics explictly enforced when meta
is missing. Precompute wrapper.
2016-10-20 08:27:11 -04:00
Jan Chaloupka
19ab3c6140 replace kubeclient with kubeclientset in scheduler factory
Current factory's client type does not allow to use different client implementing the same interface.
2016-10-14 14:43:43 +02:00
Kubernetes Submit Queue
5509e50db4 Merge pull request #31605 from resouer/eclass-1
Automatic merge from submit-queue

[Part 1] Implementation of equivalence pod

Part 1 of #30844

This PR: 

- Refactored `predicate.go`, so that `GetResourceRequest` can be used in other places to `GetEquivalencePod`.
- Implement a `equivalence_cache.go` to deal with all information we need to calculate an equivalent pod.
- Define and register a `RegisterGetEquivalencePodFunction `.

Work in next PR:
- The update of `equivalence_cache.go`
- Unit test
- Integration/e2e test

I think we can begin from the `equivalence_cache.go`? Thanks.  cc @wojtek-t @davidopp 

If I missed any other necessary part, please point it out.
2016-10-10 02:46:00 -07:00
Harry Zhang
204dbe7fdd Update provider and cache
Update equivalent class & remove priority

Use controller ref

Directly clear the cache
2016-10-10 09:25:15 +01:00
deads2k
518d5500c7 remove testapi.Default.GroupVersion 2016-10-07 10:10:54 -04:00
Kubernetes Submit Queue
96fde0fe8d Merge pull request #33834 from wojtek-t/scheduler_map_reduce_6
Automatic merge from submit-queue

Migrate EqualPriority in scheduler to map-reduce-like framework

Ref #24246
2016-10-04 09:23:01 -07:00
Wojciech Tyczynski
f8632e2203 Migrate EqualPriority to MapReduce-like framework. 2016-10-04 12:19:08 +02:00
David Ashpole
0c8a664e50 addressed comments 2016-10-03 11:42:56 -07:00
David Ashpole
fed3f37eef Split NodeDiskPressure into NodeInodePressure and NodeDiskPressure 2016-10-03 11:42:56 -07:00
Wojciech Tyczynski
daac9a1869 Remove unnecessary podLister from SelectorSpreading 2016-09-30 15:15:14 +02:00
Wojciech Tyczynski
6598c181f7 Support metadata producer with underlying data. 2016-09-28 09:11:18 +02:00
Wojciech Tyczynski
4ccb27202c Migrate priority functions with non-trivial reduce function. 2016-09-27 11:27:38 +02:00
Wojciech Tyczynski
ea943d825e Migrate a bunch of priority functions to map-reduce framework 2016-09-13 13:20:29 +02:00
Wojciech Tyczynski
c8c938c3e0 AvoidPriority using ControllerRef 2016-09-12 08:45:02 +02:00
Kubernetes Submit Queue
cfe53d14fd Merge pull request #30733 from asalkeld/compat-test
Automatic merge from submit-queue

Update scheduler config file compatibility tests

**What this PR does / why we need it**:
Added missing compatibility tests for scheduler config file options.

**Which issue this PR fixes** 
fixes #30099

**Special notes for your reviewer**:
I came up with the options based on the contents of default.go in each branch.

**Release note**:
```release-note
NONE
```
2016-09-10 03:48:49 -07:00
Angus Salkeld
27f1f854ba Update scheduler config file compatibility tests
Co-Authored-By: Jordan Liggitt <jliggitt@redhat.com>
2016-09-09 09:31:46 +10:00
Wojciech Tyczynski
33c710adf0 MapReduce-like scheduler priority functions 2016-08-31 15:16:10 +02:00
Marcin Wielgus
2df92ff155 Cluster autoscaler friendly scheduling algorithm 2016-08-19 15:20:15 +02:00
Marcin Wielgus
de2fea95ca ClusterAutoscaler-friendly scheduler priority function that promotes well-used nodes. 2016-08-18 08:34:10 +02:00
Wojciech Tyczynski
022719b323 Enable PodAffinity by default in scheduler 2016-08-02 15:06:45 +02:00
derekwaynecarr
9604b47c13 Scheduler does not place pods on nodes that have disk pressure 2016-07-28 16:01:38 -04:00
jiangyaoguo
4e91166bc6 Use PreferAvoidPods annotation to avoid pods being scheduled to specific node.
1. define PreferAvoidPods annotation
2. add PreferAvoidPodsPriority
3. validate AvoidPods in node annotations
2016-07-13 17:07:46 +08:00
Wojciech Tyczynski
e8e8e2d086 Remove unneeded factories 2016-07-11 15:41:26 +02:00
David McMahon
ef0c9f0c5b Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
Jan Chaloupka
b95b30bbd7 Scheduler: introduce CheckNodeMemoryPressurePredicate, don't schedule pods for nodes that reports memory pressury.
Introduce unit-test for CheckNodeMemoryPressurePredicate

Following work done in #14943
2016-05-22 00:40:28 +02:00
Kevin
52fb89ff73 implement taints and tolerations 2016-05-18 15:06:23 +00:00
David Oppenheimer
b0bd3ff167 Move inter-pod affinity predicate and priority functions from default to
non-default due to negative performance effects even when not using
the feature.
2016-05-07 16:57:07 -07:00
Kevin
82ba4f077e implement inter pod topological affinity and anti-affinity 2016-05-06 06:46:23 +00:00
k8s-merge-robot
00308f7a9f Merge pull request #24598 from wojtek-t/improve_scheduler_predicates
Automatic merge from submit-queue

Store node information in NodeInfo

This is significantly improving scheduler throughput.

On 1000-node cluster:
- empty cluster: ~70pods/s
- full cluster: ~45pods/s
Drop in throughput is mostly related to priority functions, which I will be looking into next (I already have some PR #24095, but we need for more things before).

This is roughly ~40% increase.
However, we still need better understanding of predicate function, because in my opinion it should be even faster as it is now. I'm going to look into it next week.

@gmarek @hongchaodeng @xiang90
2016-04-28 02:17:59 -07:00
zhouhaibing089
bf1a3f99c0 Uncomment the code that cause by #19254 2016-04-25 23:21:31 +08:00
Wojciech Tyczynski
1835c8528d Store node information in NodeInfo 2016-04-25 10:08:05 +02:00
HaiyangDING
41ed85479a move predicates into library (address #12744)
DONE:
1. refactor all predicates: predicates return fitOrNot(bool) and error(Error) in which the latter is of type
	PredicateFailureError or InsufficientResourceError. (For violation of either MaxEBSVolumeCount or
        MaxGCEPDVolumeCount, returns one same error type as ErrMaxVolumeCountExceeded)
2. GeneralPredicates() is a predicate function, which includes serveral other predicate functions (PodFitsResource,
        PodFitsHost, PodFitsHostPort). It is registered as one of the predicates in DefaultAlgorithmProvider, and
        is also called in canAdmitPod() in Kubelet and should be called by other components (like rescheduler, etc)
        if necessary. See discussion in issue #12744
3. remove podNumber check from GeneralPredicates
4. HostName is now verified in Kubelet's canAdminPod(). add TestHostNameConflicts in kubelet_test.go
5. add getNodeAnyWay() method in Kubelet to get node information in standaloneMode

TODO:
1. determine which predicates should be included in GeneralPredicates()
2. separate GeneralPredicates() into:
	a. GeneralPredicatesEvictPod() and
	b. GeneralPredicatesNotEvictPod()
3. DaemonSet should use GeneralPredicates()
2016-04-11 00:57:03 +08:00
Jan Safranek
f270cb1b9b Allow 39 atached EBS devices.
AWS has soft support limit for 40 attached EBS devices. Assuming there is just
one root device, use the rest for persistent volumes.

The devices will have name /dev/xvdba - /dev/xvdcm, leaving /dev/sda - /dev/sdz
to the system.

Also, add better error handling and propagate error
"Too many EBS volumes attached to node XYZ" to a pod.
2016-03-15 17:28:59 +01:00
Kris
e664ef922f Move restclient to its own package 2016-02-29 12:05:13 -08:00
David Oppenheimer
053f1c6008 Update user guide and scheduler documentation to describe node affinity.
Register image priority locality function, which the original PR that introduced
it forgot to do. Change zone and region labels to beta.
2016-02-18 17:09:41 -08:00
laushinka
7ef585be22 Spelling fixes inspired by github.com/client9/misspell 2016-02-18 06:58:05 +07:00
mqliang
0aab44a00d add ReplicaSet support in scheduler 2016-02-16 14:34:46 +08:00
Hongchao Deng
9236e4a0b4 scheduler: change fit predicates and priority func as needed for optimization 2016-02-09 09:38:28 -08:00
k8s-merge-robot
175d0c57f2 Merge pull request #19880 from DirectXMan12/feature/limit-ebs-scheduler-predicate
Auto commit by PR queue bot
2016-02-05 09:26:42 -08:00
Kevin
c8c82c1d8f implement Node affinity and NodeSelector 2016-02-04 01:53:14 +00:00
Solly Ross
2d436ff080 Scheduler predicate for capping node volume count
For certain volume types (e.g. AWS EBS or GCE PD), a limitted
number of such volumes can be attached to a given node.  This commit
introduces a predicate with allows cluster admins to cap
the maximum number of volumes matching a particular type attached to a
given node.

The volume type is configurable by passing a pair of filter functions,
and the maximum number of such volumes is configurable to allow node
admins to reserve a certain number of volumes for system use.

By default, the predicate is exposed as MaxEBSVolumeCount and
MaxGCEPDVolumeCount (for AWS ElasticBlocKStore and GCE PersistentDisk
volumes, respectively), each of which can be configured using the
`KUBE_MAX_PD_VOLS` environment variable.

Fixes #7835
2016-02-02 16:21:42 -05:00