Skip to content

descheduler crashes - failed decoding descheduler's policy config "/policy-dir/policy.yaml": strict decoding error: unknown field "podProtections" #1801

@stearz

Description

@stearz

What version of descheduler are you using?
descheduler version: Helm Chart version 0.34.0 (image: registry.k8s.io/descheduler/descheduler:v0.34.0)

Does this issue reproduce with the latest release?
As 0.34.0 is latest... - yes.

Which descheduler CLI options are you using?
n/a

Please provide a copy of your descheduler policy config file

apiVersion: "descheduler/v1alpha2"
kind: "DeschedulerPolicy"
profiles:
- name: default
  pluginConfig:
  - args:
      podProtections:
        defaultDisabled:
        - PodsWithLocalStorage
        extraEnabled:
        - PodsWithPVC
    name: DefaultEvictor
  - name: RemoveDuplicates
  - args:
      includingInitContainers: true
      podRestartThreshold: 100
    name: RemovePodsHavingTooManyRestarts
  - args:
      nodeAffinityType:
      - requiredDuringSchedulingIgnoredDuringExecution
    name: RemovePodsViolatingNodeAffinity
  - name: RemovePodsViolatingNodeTaints
  - name: RemovePodsViolatingInterPodAntiAffinity
  - name: RemovePodsViolatingTopologySpreadConstraint
  - args:
      targetThresholds:
        cpu: 50
        memory: 50
        pods: 50
      thresholds:
        cpu: 20
        memory: 20
        pods: 20
    name: LowNodeUtilization
  plugins:
    balance:
      enabled:
      - RemoveDuplicates
      - RemovePodsViolatingTopologySpreadConstraint
      - LowNodeUtilization
    deschedule:
      enabled:
      - RemovePodsHavingTooManyRestarts
      - RemovePodsViolatingNodeTaints
      - RemovePodsViolatingNodeAffinity
      - RemovePodsViolatingInterPodAntiAffinity

What k8s version are you using (kubectl version)?
1.34.0

kubectl version Output
$ kubectl version

What did you do?

I installed descheduler via helm from here (https://kubernetes-sigs.github.io/descheduler/). My values.yaml only has this set:

schedule: "30 * * * *"

Pod comes up and logs this before it crashes:

I1218 16:53:31.846272       1 feature_gate.go:385] feature gates: {map[]}
I1218 16:53:37.623366       1 secure_serving.go:57] Forcing use of http/1.1 only
I1218 16:53:37.625136       1 named_certificates.go:53] "Loaded SNI cert" index=0 certName="self-signed loopback" certDetail="\"apiserver-loopback-client@1766076817\" [serving] validServingFor=[apiserver-loopback-client] issuer=\"apiserver-loopback-client-ca@1766076812\" (2025-12-18 15:53:31 +0000 UTC to 2028-12-18 15:53:31 +0000 UTC (now=2025-12-18 16:53:37.6249822 +0000 UTC))"
I1218 16:53:37.625355       1 secure_serving.go:211] Serving securely on [::]:10258
I1218 16:53:37.625430       1 tracing.go:87] Did not find a trace collector endpoint defined. Switching to NoopTraceProvider
I1218 16:53:37.626114       1 tlsconfig.go:243] "Starting DynamicServingCertificateController"
I1218 16:53:37.627873       1 envvar.go:172] "Feature gate default state" feature="ClientsAllowCBOR" enabled=false
I1218 16:53:37.627992       1 envvar.go:172] "Feature gate default state" feature="ClientsPreferCBOR" enabled=false
I1218 16:53:37.628013       1 envvar.go:172] "Feature gate default state" feature="InformerResourceVersion" enabled=false
I1218 16:53:37.628028       1 envvar.go:172] "Feature gate default state" feature="InOrderInformers" enabled=true
I1218 16:53:37.628043       1 envvar.go:172] "Feature gate default state" feature="WatchListClient" enabled=false
E1218 16:53:37.633586       1 server.go:73] "failed to run descheduler server" err="failed decoding descheduler's policy config \"/policy-dir/policy.yaml\": strict decoding error: unknown field \"podProtections\""
E1218 16:53:37.633685       1 run.go:72] "command failed" err="failed decoding descheduler's policy config \"/policy-dir/policy.yaml\": strict decoding error: unknown field \"podProtections\""

What did you expect to see?
The pod of the cronjob should run without crashing

What did you see instead?
It crashes with above last words

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugCategorizes issue or PR as related to a bug.lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions