Sean Malloy
cff984261e
Log an error when EvictPod method returns a non-nil error
...
End users should be able to see the detailed error from the EvictPod
method when it fails. Updates all strategies to log the error. The
PodLifeTime strategy already logs this error.
2020-05-13 23:36:32 -05:00
Sean Malloy
4819ab9c69
Add namespace to pod eviction log messages
...
In multi-tenant environments it is useful to know which namespace a pod
was evicted from. Therefore log the namespace when evicting pods.
Also, do not log a nil error when successfully evicting pods.
2020-05-13 23:28:25 -05:00
Kubernetes Prow Robot
25336da708
Merge pull request #281 from KohlsTechnology/update-travis-ci
...
Update Travis CI build matrix with latest k8s point releases
2020-05-13 08:20:26 -07:00
Sean Malloy
4941f6a16b
Update Travis CI build matrix with latest k8s point releases
2020-05-12 22:38:23 -05:00
Kubernetes Prow Robot
d7e93058d4
Merge pull request #280 from damemi/k8s-1.18
...
Update to k8s 1.18.2 dependencies
2020-05-12 13:40:21 -07:00
Mike Dame
c20a595370
Update travis.yml with new k8s version and updated kind version
2020-05-12 15:01:25 -04:00
Mike Dame
eec1104d6e
React to 1.18 by adding contexts to client calls
2020-05-12 15:01:25 -04:00
Mike Dame
741b35edf5
Update to k8s 1.18.2 dependencies
2020-05-12 14:07:31 -04:00
Kubernetes Prow Robot
c01cfcf3b6
Merge pull request #274 from KohlsTechnology/pod-lifetime-strategy
...
Add New PodLifeTime Strategy
2020-05-08 07:29:42 -07:00
Sean Malloy
643cd472ef
Add initial production use cases section to user guide
2020-05-08 09:02:24 -05:00
Sean Malloy
668d727fc2
Add VS Code File To .gitignore
2020-05-07 23:10:48 -05:00
Sean Malloy
423ee35846
Add New PodLifeTime Strategy
...
The new PodLifeTime descheduler strategy can be used to evict pods that
were created more than the configured number of seconds ago.
In the below example pods created more than 24 hours ago will be evicted.
````
apiVersion: "descheduler/v1alpha1"
kind: "DeschedulerPolicy"
strategies:
"PodLifeTime":
enabled: true
params:
maxPodLifeTimeSeconds: 86400
````
2020-05-07 23:10:36 -05:00
Kubernetes Prow Robot
31c7855212
Merge pull request #278 from lixiang233/fix_readme
...
Fix readme
2020-05-07 12:19:43 -07:00
Kubernetes Prow Robot
211f3942b6
Merge pull request #276 from damemi/toomanyrestarts-pointer
...
Switch PodsHavingTooManyRestarts params to pointer
2020-05-07 12:17:42 -07:00
Kubernetes Prow Robot
beae282735
Merge pull request #277 from damemi/damemi-approvers
...
Add damemi to approvers
2020-05-07 12:15:42 -07:00
lixiang
635348efb9
Fix readme
2020-05-07 11:47:32 +08:00
Mike Dame
fa335c782f
Switch PodsHavingTooManyRestarts params to pointer
2020-05-06 13:29:05 -04:00
Mike Dame
b019a58525
Add damemi to approvers
2020-05-06 11:00:58 -04:00
Kubernetes Prow Robot
78eef6c343
Merge pull request #267 from ingvagabund/drop-DeschedulerServer-from-strategies
...
Drop descheduler server from strategies
2020-04-28 08:34:06 -07:00
Jan Chaloupka
cbcefb5d2f
Remove options.DeschedulerServer from all strategies
2020-04-28 16:13:33 +02:00
Kubernetes Prow Robot
149085fb57
Merge pull request #240 from ingvagabund/turn-strategy-params-NodeResourceUtilizationThresholds-field-into-pointer
...
Turn StrategyParameters.NodeResourceUtilizationThresholds field into a pointer
2020-04-28 06:48:07 -07:00
Jan Chaloupka
991eddb691
Turn StrategyParameters.NodeResourceUtilizationThresholds field into a pointer
...
The field is intended to be omitempty when not set. Without a pointer the strategy
serialized into json string looks like:
```json
strategies:
LowNodeUtilization:
enabled: true
params:
nodeResourceUtilizationThresholds:
numberOfNodes: 1
targetThresholds:
cpu: 50
memory: 50
pods: 20
thresholds:
cpu: 50
memory: 50
pods: 20
RemoveDuplicates:
enabled: true
params:
nodeResourceUtilizationThresholds: {}
RemovePodsViolatingInterPodAntiAffinity:
enabled: true
params:
nodeResourceUtilizationThresholds: {}
RemovePodsViolatingNodeAffinity:
enabled: true
params:
nodeAffinityType:
- requiredDuringSchedulingIgnoredDuringExecution
nodeResourceUtilizationThresholds: {}
RemovePodsViolatingNodeTaints:
enabled: true
params:
nodeResourceUtilizationThresholds: {}
```
It's preferred to have the following json string instead:
```
strategies:
LowNodeUtilization:
enabled: true
params:
nodeResourceUtilizationThresholds:
numberOfNodes: 1
targetThresholds:
cpu: 50
memory: 50
pods: 20
thresholds:
cpu: 50
memory: 50
pods: 20
RemoveDuplicates:
enabled: true
RemovePodsViolatingInterPodAntiAffinity:
enabled: true
RemovePodsViolatingNodeAffinity:
enabled: true
params:
nodeAffinityType:
- requiredDuringSchedulingIgnoredDuringExecution
RemovePodsViolatingNodeTaints:
enabled: true
```
2020-04-28 15:20:30 +02:00
Kubernetes Prow Robot
91de471376
Merge pull request #254 from damemi/toomanyrestarts
...
Add RemoveTooManyRestarts policy
2020-04-27 12:48:05 -07:00
Mike Dame
c2d7e22749
make gen && go mod vendor
2020-04-24 10:48:28 -04:00
Mike Dame
e7c42794a0
Add RemovePodsHavingTooManyRestarts strategy
2020-04-24 10:48:28 -04:00
Kubernetes Prow Robot
3a8dfc07ed
Merge pull request #266 from ingvagabund/pod-evictor
...
Move maximum-pods-per-nodes-evicted logic under a single invocation
2020-04-23 16:14:07 -07:00
Jan Chaloupka
077b7f6505
Drop check for MaxNoOfPodsToEvictPerNode and invoke EvictPod wrapper instead
2020-04-22 10:33:22 +02:00
Jan Chaloupka
240fa93bc5
Move maximum-pods-per-nodes-evicted logic under a single invocation
...
Each strategy implements a test for checking if a maximum number of pods per node
was already evicted. The test duplicates a code that can be put
under a single invocation. Thus, reducing the number of arguments passed
to each strategy given EvicPod call can encapsulate both the check
and the invocation of the pod eviction itself.
2020-04-22 10:32:16 +02:00
Kubernetes Prow Robot
6c7f846917
Merge pull request #265 from ingvagabund/tolerations-tains-code-cleanup
...
Tolerations taints code cleanup
2020-04-21 14:27:52 -07:00
Jan Chaloupka
6db7c3b92c
Call utils.TolerationsTolerateTaintsWithFilter directly, not through checkPodsSatisfyTolerations
2020-04-21 22:34:14 +02:00
Kubernetes Prow Robot
030267107a
Merge pull request #262 from ingvagabund/order-pods-by-priority-only-over-over-utilized-nodes
...
Order pods by priority only over over utilized nodes
2020-04-19 14:05:38 -07:00
Jan Chaloupka
1c300a9881
Drop getNoScheduleTaints and allTaintsTolerated in favor of utils.TolerationsTolerateTaintsWithFilter
2020-04-19 22:18:49 +02:00
Jan Chaloupka
0e9b33b822
allTaintsTolerated: remove for iteration through tolerations which is already implemented in utils.TolerationsTolerateTaint
2020-04-19 22:07:34 +02:00
Jan Chaloupka
36e3d1e703
Drop local implementation of toleratesTaint in favor of k8s.io/api/core/v1.Toleration.TolerateTaint
...
Functionally identical implementation of toleratesTaint is already provided in k8s.io/api
2020-04-19 21:58:41 +02:00
Jan Chaloupka
f53264b613
lownodeutilization: evict best-effort pods only
...
Unit test refactored node utilization and pod clasification
2020-04-17 11:32:34 +02:00
Jan Chaloupka
414554ae5e
lownodeutilization: make unit tests with/without priority table driven
2020-04-17 11:32:28 +02:00
Jan Chaloupka
150f945592
lownodeutilization: clasify pods of over utilized nodes only
...
Only over utilized nodes need clasification of pods into categories.
Thus, skipping categorizing of pods which saves computation time in cases
where the number of over utilized nodes makes less than 50% of all nodes
or their fraction.
2020-04-17 11:32:22 +02:00
Kubernetes Prow Robot
9a84afece1
Merge pull request #264 from ingvagabund/remove-pods-violating-node-affinity
...
readme: RemovePodsViolatingNodeAffinity: reword description of the strategy
2020-04-16 20:59:08 -07:00
Jan Chaloupka
e0c101c5ae
readme: RemovePodsViolatingNodeAffinity: reword description of the strategy
...
Compared to https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#node-affinity
the strategy kinda implements requiredDuringSchedulingRequiredDuringExecution node affinity type
for kubelets. Only addition to kubelet is the strategy checks whether is at least another node
capable of respecting the node affinity rules.
When requiredDuringSchedulingRequiredDuringExecution node affinity type is implemented in kubelet,
it's likely the strategy either gets removed or re-implemented. Stressing the relation with
requiredDuringSchedulingRequiredDuringExecution will helps consumers of descheduler
to keep in mind the kubelet will eventually take over the strategy when implemented.
2020-04-15 11:54:37 +02:00
Kubernetes Prow Robot
e3a562aea0
Merge pull request #260 from CriaHu/hyq_descheduler
...
fix broken link :
2020-04-07 18:01:44 -07:00
Kubernetes Prow Robot
4966e8ee08
Merge pull request #256 from damemi/fix-podfitsanynode
...
Fix early return from PodFitsAnyNode check
2020-04-07 08:01:43 -07:00
Kubernetes Prow Robot
d3542d5892
Merge pull request #258 from damemi/verify-deps
...
Add verify-vendor scripts to CI
2020-04-07 07:53:43 -07:00
Mike Dame
62d04b0fc7
go mod tidy && go mod vendor
2020-04-07 10:34:47 -04:00
Mike Dame
6ecbc85448
Add hack/{update,verify}-vendor.sh scripts
2020-04-07 10:34:47 -04:00
Cria Hu
b9b1eae6fb
fix broken link :
...
https://git.k8s.io/community/contributors/guide/contributor-cheatsheet.md
2020-04-06 09:28:09 +08:00
Mike Dame
e95e42930d
Remove early return false from PodFitsAnyNode
2020-04-02 11:53:29 -04:00
Kubernetes Prow Robot
3cabb69014
Merge pull request #255 from KohlsTechnology/go-1.13.9
...
Update to Go 1.13.9
2020-03-31 20:47:27 -07:00
Sean Malloy
ad8f90f177
Update to Go 1.13.9
...
Kubernetes releases 1.16 through 1.19 have been updated
to Go 1.13.9, so it's time to update the descheduler too.
2020-03-31 22:30:52 -05:00
Kubernetes Prow Robot
8a62cf1699
Merge pull request #246 from KohlsTechnology/go-1.13.8
...
Update to Go 1.13.8
2020-03-09 11:17:36 -07:00
Sean Malloy
a6b54dae99
Update to Go 1.13.8
...
Kubernetes releases 1.15 through 1.19 have been updated
to Go 1.13.8, so it's time to update the descheduler too.
https://github.com/kubernetes/release/issues/1134
2020-03-08 23:12:53 -05:00