kubernetes-sigs / descheduler

Descheduler for Kubernetes
https://sigs.k8s.io/descheduler
Apache License 2.0
4.23k stars 645 forks source link

RemovePodsViolatingNodeTaints with includedTaints #1393

Closed Tadcas closed 1 month ago

Tadcas commented 1 month ago

descheduler version: v0.29.0 descheduler policy config file: `--- apiVersion: v1 kind: ConfigMap metadata: name: descheduler-policy-configmap namespace: descheduler data: policy.yaml: | apiVersion: "descheduler/v1alpha2" kind: "DeschedulerPolicy" nodeSelector: "agentpool=user1" profiles:

AKS version - 1.29.2

What did you do? Tried to run cronjob with RemovePodsViolatingNodeTaints plugin. If using excludedTaints arg, everything is working, if using includedTaints arg, get the errors below: I0508 14:42:13.637675 1 secure_serving.go:57] Forcing use of http/1.1 only I0508 14:42:13.638451 1 named_certificates.go:53] "Loaded SNI cert" index=0 certName="self-signed loopback" certDetail="\"apiserver-loopback-client@1715179333\" [serving] validServingFor=[apiserver-loopback-client] issuer=\"apiserver-loopback-client-ca@1715179333\" (2024-05-08 13:42:13 +0000 UTC to 2025-05-08 13:42:13 +0000 UTC (now=2024-05-08 14:42:13.638350473 +0000 UTC))" I0508 14:42:13.638478 1 secure_serving.go:213] Serving securely on [::]:10258 I0508 14:42:13.638489 1 tracing.go:87] Did not find a trace collector endpoint defined. Switching to NoopTraceProvider I0508 14:42:13.638518 1 tlsconfig.go:240] "Starting DynamicServingCertificateController" E0508 14:42:13.639663 1 server.go:96] "descheduler server" err="failed decoding descheduler's policy config \"/policy-dir/policy.yaml\": strict decoding error: unknown field \"includedTaints\"" E0508 14:42:13.639680 1 run.go:74] "command failed" err="failed decoding descheduler's policy config \"/policy-dir/policy.yaml\": strict decoding error: unknown field \"includedTaints\""

Using an example from here: https://github.com/kubernetes-sigs/descheduler/tree/master?tab=readme-ov-file#removepodsviolatingnodetaints

Also tested with --dry-run option. Am I missing something?

What did you expect to see? Expect that it works the same way as using excludedTaints.

What did you see instead? When run cronjob I get this error: I0508 14:42:13.637675 1 secure_serving.go:57] Forcing use of http/1.1 only I0508 14:42:13.638451 1 named_certificates.go:53] "Loaded SNI cert" index=0 certName="self-signed loopback" certDetail="\"apiserver-loopback-client@1715179333\" [serving] validServingFor=[apiserver-loopback-client] issuer=\"apiserver-loopback-client-ca@1715179333\" (2024-05-08 13:42:13 +0000 UTC to 2025-05-08 13:42:13 +0000 UTC (now=2024-05-08 14:42:13.638350473 +0000 UTC))" I0508 14:42:13.638478 1 secure_serving.go:213] Serving securely on [::]:10258 I0508 14:42:13.638489 1 tracing.go:87] Did not find a trace collector endpoint defined. Switching to NoopTraceProvider I0508 14:42:13.638518 1 tlsconfig.go:240] "Starting DynamicServingCertificateController" E0508 14:42:13.639663 1 server.go:96] "descheduler server" err="failed decoding descheduler's policy config \"/policy-dir/policy.yaml\": strict decoding error: unknown field \"includedTaints\"" E0508 14:42:13.639680 1 run.go:74] "command failed" err="failed decoding descheduler's policy config \"/policy-dir/policy.yaml\": strict decoding error: unknown field \"includedTaints\""

damemi commented 1 month ago

Hi @Tadcas, includedTaints is not available in v0.29.0, it was recently merged to master and will be available in the next release (v0.30.0)

Please make sure you are following the docs for your version of Descheduler, as the master branch includes unreleased changes. Alternatively you can build your own image from master