1
0
mirror of https://github.com/kubernetes-sigs/descheduler.git synced 2026-01-26 05:14:13 +01:00
Commit Graph

1833 Commits

Author SHA1 Message Date
Jan Chaloupka
c2ed7eb575 TestLowNodeUtilizationKubernetesMetrics: set the right -cpu value for the cpu stressor 2025-04-07 10:49:04 +02:00
Kubernetes Prow Robot
17b90969cf Merge pull request #1629 from googs1025/fix_sortDomains
fix removepodsviolatingtopologyspreadconstraint plugin sort logic
2025-03-28 09:06:44 -07:00
Kubernetes Prow Robot
2cce60dc2b Merge pull request #1657 from ricardomaraschini/log
chore: log average and assessed thresholds
2025-03-28 06:52:40 -07:00
googs1025
b4b203cc60 chore: add unit test for sortDomains func 2025-03-28 20:58:54 +08:00
googs1025
59d1d5d1b9 making isEvictable and hasSelectorOrAffinity invoked only once
Signed-off-by: googs1025 <googs1025@gmail.com>
2025-03-28 20:57:02 +08:00
Ricardo Maraschini
98e6ed6587 chore: log average and assessed thresholds
when calculating the average an applying the deviations it would be nice
to also see the assessed values.

this commit makes the descheduler logs these values when using level 3.
2025-03-28 10:16:20 +01:00
googs1025
4548723dea fix(removepodsviolatingtopologyspreadconstraint): fix removepodsviolatingtopologyspreadconstraint plugin sort logic
Signed-off-by: googs1025 <googs1025@gmail.com>
2025-03-27 23:49:45 +08:00
Kubernetes Prow Robot
7542cac9d0 Merge pull request #1654 from googs1025/add_reviewer
nominate googs1025 for descheduler reviewers
2025-03-24 02:16:35 -07:00
googs1025
8871272d35 nominate googs1025 for descheduler reviewers 2025-03-24 10:16:08 +08:00
Kubernetes Prow Robot
a31a3b5e85 Merge pull request #1580 from tspearconquest/docs/add_cmdOptions_details_to_readme
Mention cmdOptions.dry-run in the helm chart readme
2025-03-23 18:22:32 -07:00
Kubernetes Prow Robot
9b9ae9a3be Merge pull request #1650 from ingvagabund/nodeutilization-deviation-skip-nodes-without-extended-resource
[nodeutilization]: skip nodes without extended resource when computing the average utilization
2025-03-20 05:58:31 -07:00
Jan Chaloupka
c22d773200 [nodeutilization] test nodes without extended resource when computing the average utilization 2025-03-20 13:22:28 +01:00
Kubernetes Prow Robot
9ba0f9b410 Merge pull request #1653 from ricardomaraschini/new-classifier
feat: move classifier to its own package
2025-03-20 05:20:31 -07:00
Ricardo Maraschini
95a631f6a5 feat: move classifier to its own package
move the classifier to its own package. introduces a generic way of
classifying usages against thresholds.
2025-03-20 11:02:47 +01:00
Kubernetes Prow Robot
89535b9b9b Merge pull request #1649 from ricardomaraschini/normalizer
feat: refactoring thresholds and usage assessment
2025-03-20 02:34:31 -07:00
Ricardo Maraschini
54d0a22ad1 chore: comment the code and simplify some things
this commit comments the low and high utilization plugins. this also
simplifies a little bit where it was possible without affecting too
much.
2025-03-20 10:06:45 +01:00
Ricardo Maraschini
87ba84b2ad feat: refactoring thresholds and usage assessment
this commit refactors the thresholds and usage assessment for the node
utilization plugins. both high and low plugins are affected by this
change.
2025-03-19 17:38:41 +01:00
Kubernetes Prow Robot
b300faece0 Merge pull request #1652 from ingvagabund/nodeutili-refactor
[nodeutilization]: produce node utilization of resources that are listed in the list of resources
2025-03-19 05:58:30 -07:00
Jan Chaloupka
04ebdbee32 [nodeutilization]: produce node utilization of resources that are listed in the list of resources 2025-03-19 12:35:19 +01:00
Kubernetes Prow Robot
6ab73d6ac5 Merge pull request #1533 from ingvagabund/node-utilization-util-snapshot
[lownodeutilization]: Actual utilization: integration with Prometheus
2025-03-17 08:53:49 -07:00
Jan Chaloupka
e283c31030 [nodeutilization]: prometheus usage client with prometheus metrics 2025-03-17 16:25:17 +01:00
Jan Chaloupka
aed345994f Update vendor for prometheus deps 2025-03-14 10:26:00 +01:00
Kubernetes Prow Robot
be4abe1727 Merge pull request #1614 from ingvagabund/nodeutilization-metrics-source
[nodeutilization]: allow to set a metrics source as a string so it can be later extended for exclusive configuration
2025-03-14 01:57:47 -07:00
Jan Chaloupka
e14b86eb8c [nodeutilization]: allow to set a metrics source as a string so it can be later extended for exclusive configuration 2025-03-13 18:00:27 +01:00
Kubernetes Prow Robot
a4d6119bcd Merge pull request #1645 from ingvagabund/nodeutilization-refactoring
nodeutilization: make the node classification more generic
2025-03-13 03:21:46 -07:00
Jan Chaloupka
57bb31de78 nodeutilization: make the classification more generic 2025-03-12 15:02:22 +01:00
Kubernetes Prow Robot
17d9b152a2 Merge pull request #1644 from ingvagabund/nodeutilization-arg-validation
nodeutilization: invoke ValidateLowNodeUtilizationArgs instead of validateLowNodeUtilizationThresholds to make the test more generic
2025-03-12 01:53:46 -07:00
Jan Chaloupka
b935c7d82c nodeutilization: invoke ValidateLowNodeUtilizationArgs instead of validateLowNodeUtilizationThresholds to make the test more generic 2025-03-11 10:04:39 +01:00
Kubernetes Prow Robot
b8e3c0bba3 Merge pull request #1642 from ingvagabund/unconstrainedevictions
lownodeutilization: evictionLimits to limit the evictions per plugin
2025-03-10 08:43:47 -07:00
Jan Chaloupka
5bf11813e6 lownodeutilization: evictionLimits to limit the evictions per plugin
In some cases it might be usefull to limit how many evictions per a
domain can be performed. To avoid burning the whole per descheduling
cycle budget. Limiting the number of evictions per node is a
prerequisite for evicting pods whose usage can't be easily subtracted
from overall node resource usage to predict the final usage. E.g. when a
pod is evicted due to high PSI pressure which takes into account many
factors which can be fully captured by the current predictive resource
model.
2025-03-07 15:31:02 +01:00
Kubernetes Prow Robot
d883c8a9e1 Merge pull request #1640 from ingvagabund/referenced-resource-list
ReferencedResourceList: alias for map[v1.ResourceName]*resource.Quantity to avoid the type definition duplication
2025-03-07 05:05:46 -08:00
Jan Chaloupka
50dd3b8971 ReferencedResourceList: alias for map[v1.ResourceName]*resource.Quantity to avoid the type definition duplication 2025-03-07 13:13:00 +01:00
Kubernetes Prow Robot
fd9f2b4614 Merge pull request #1637 from googs1025/chore/fix
chore: add setDefaultEvictor return an error
2025-03-05 00:47:45 -08:00
googs1025
655ab516c7 chore: add error handle for setDefaultEvictor func 2025-02-26 22:34:57 +08:00
googs1025
0d5301ead2 chore: add continue for GetNodeWeightGivenPodPreferredAffinity func 2025-02-25 09:26:02 +08:00
Kubernetes Prow Robot
d97f1c9057 Merge pull request #1636 from ricardomaraschini/plugin-sample
chore: add descheduler plugin example
2025-02-24 10:40:31 -08:00
Ricardo Maraschini
57a04aae9f chore: add descheduler plugin example
This commit adds a sample plugin implementation as follow:

This directory provides an example plugin for the Kubernetes Descheduler,
demonstrating how to evict pods based on custom criteria. The plugin targets
pods based on:

* **Name Regex:** Pods matching a specified regular expression.
* **Age:** Pods older than a defined duration.
* **Namespace:** Pods within or outside a given list of namespaces (inclusion
  or exclusion).

To incorporate this plugin into your Descheduler build, you must register it
within the Descheduler's plugin registry. Follow these steps:

1.  **Register the Plugin:**
    * Modify the `pkg/descheduler/setupplugins.go` file.
    * Add the following registration line to the end of the
      `RegisterDefaultPlugins()` function:

    ```go
    pluginregistry.Register(
      example.PluginName,
      example.New,
      &example.Example{},
      &example.ExampleArgs{},
      example.ValidateExampleArgs,
      example.SetDefaults_Example,
      registry,
    )
    ```

2.  **Generate Code:**
    * If you modify the plugin's code, execute `make gen` before rebuilding the
      Descheduler. This ensures generated code is up-to-date.

3.  **Rebuild the Descheduler:**
    * Build the descheduler with your changes.

Configure the plugin's behavior using the Descheduler's policy configuration.
Here's an example:

```yaml
apiVersion: descheduler/v1alpha2
kind: DeschedulerPolicy
profiles:
- name: LifecycleAndUtilization
  plugins:
    deschedule:
      enabled:
        - Example
  pluginConfig:
  - name: Example
    args:
      regex: ^descheduler-test.*$
      maxAge: 3m
      namespaces:
        include:
        - default
```

- `regex: ^descheduler-test.*$`: Evicts pods whose names match the regular
  expression `^descheduler-test.*$`.
- `maxAge: 3m`: Evicts pods older than 3 minutes.
- `namespaces.include: - default`: Evicts pods within the default namespace.

This configuration will cause the plugin to evict pods that meet all three
criteria: matching the `regex`, exceeding the `maxAge`, and residing in the
specified namespace.
2025-02-24 18:36:13 +01:00
Kubernetes Prow Robot
f3abaf48ae Merge pull request #1632 from jandai/master
PodMatchNodeSelector: Replaced PodMatchNodeSelector implementation wi…
2025-02-18 07:00:27 -08:00
Jandai
88af72b907 PodMatchNodeSelector: Replaced PodMatchNodeSelector implementation with k8s.io/component-helpers to reduce code size and optimize 2025-02-16 16:48:21 +08:00
Kubernetes Prow Robot
fa3fb4e954 Merge pull request #1612 from LukeCarrier/fix-otel-tracing
tracing: test for and address semconv/SDK version conflicts
2025-01-24 11:09:23 -08:00
Luke Carrier
d5b609b34a tracing: bump otel semconv to 1.26
Fix:

    E0122 20:09:35.824338  267288 tracing.go:130] "failed to create traceable resource" err=<
            1 errors occurred detecting resource:
                    * conflicting Schema URL: https://opentelemetry.io/schemas/1.24.0 and https://opentelemetry.io/schemas/1.26.0
     >
    E0122 20:09:35.824366  267288 server.go:108] "failed to create tracer provider" err=<
            1 errors occurred detecting resource:
                    * conflicting Schema URL: https://opentelemetry.io/schemas/1.24.0 and https://opentelemetry.io/schemas/1.26.0
     >
2025-01-22 21:14:04 +00:00
Luke Carrier
9c6604fc51 tracing: test for semconv/SDK version conflicts 2025-01-22 21:12:09 +00:00
Kubernetes Prow Robot
1a49e116df Merge pull request #1599 from linuxmaniac/vseva/1597
charts: add needed perms if metricsCollector is enabled
2025-01-10 05:54:31 -08:00
Victor Seva
4775db9e2f charts: add needed perms if metricsCollector is enabled 2025-01-10 11:58:56 +01:00
Kubernetes Prow Robot
52d5d6398c Merge pull request #1606 from googs1025/revise/e2e_test_for_flake
flake: rollback gracePeriod for evict pod in e2e test
2025-01-09 08:06:32 -08:00
googs1025
6100c914b4 fix: rollback gracePeriod for evict pod in e2e test 2025-01-09 22:29:05 +08:00
Kubernetes Prow Robot
0b3c022c32 Merge pull request #1596 from linuxmaniac/vseva/1595
charts: add missing permission for policy
2025-01-07 18:48:29 +01:00
Kubernetes Prow Robot
335c698b38 Merge pull request #1538 from googs1025/feature/grace_period_seconds
feature(descheduler): add grace_period_seconds for DeschedulerPolicy
2025-01-07 10:42:30 +01:00
Kubernetes Prow Robot
e39ae80628 Merge pull request #1602 from googs1025/chore/ut_test
chore: add ignorePvcPods param in default evictor filter unit test
2025-01-07 09:12:29 +01:00
googs1025
3440abfa41 chore: add ignorePvcPods flag in default evictor filter unit test 2025-01-07 15:27:28 +08:00