DirectorySecurity AdvisoriesPricing
Sign in
Directory
descheduler logoHELM

descheduler

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# Default values for descheduler.
2
# This is a YAML-formatted file.
3
# Declare variables to be passed into your templates.
4
5
# CronJob or Deployment
6
kind: CronJob
7
image:
8
repository: cgr.dev/chainguard-private/descheduler
9
# Overrides the image tag whose default is the chart version
10
tag: 0.37.0-r5@sha256:f32f6f9c5b3a5c808e79157edbc9a538dcf2a35adaa017e06844504ec762b574
11
pullPolicy: IfNotPresent
12
imagePullSecrets:
13
# - name: container-registry-secret
14
resources:
15
requests:
16
cpu: 500m
17
memory: 256Mi
18
limits:
19
cpu: 500m
20
memory: 256Mi
21
ports:
22
- containerPort: 10258
23
protocol: TCP
24
securityContext:
25
allowPrivilegeEscalation: false
26
capabilities:
27
drop:
28
- ALL
29
privileged: false
30
readOnlyRootFilesystem: true
31
runAsNonRoot: true
32
runAsUser: 1000
33
# podSecurityContext -- [Security context for pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
34
podSecurityContext: {}
35
# fsGroup: 1000
36
37
nameOverride: ""
38
fullnameOverride: ""
39
# -- Override the deployment namespace; defaults to .Release.Namespace
40
namespaceOverride: ""
41
# labels that'll be applied to all resources
42
commonLabels: {}
43
cronJobApiVersion: "batch/v1"
44
schedule: "*/2 * * * *"
45
suspend: false
46
# startingDeadlineSeconds: 200
47
# successfulJobsHistoryLimit: 3
48
# failedJobsHistoryLimit: 1
49
# ttlSecondsAfterFinished: 600
50
# activeDeadlineSeconds: 60 # Make sure this value is SHORTER than the cron interval.
51
# timeZone: Etc/UTC
52
53
# Required when running as a Deployment
54
deschedulingInterval: 5m
55
# Specifies the replica count for Deployment
56
# Set leaderElection if you want to use more than 1 replica
57
# Set affinity.podAntiAffinity rule if you want to schedule onto a node
58
# only if that node is in the same zone as at least one already-running descheduler
59
replicas: 1
60
revisionHistoryLimit: 10
61
# Specifies whether Leader Election resources should be created
62
# Required when running as a Deployment
63
# NOTE: Leader election can't be activated if DryRun enabled
64
leaderElection: {}
65
# enabled: true
66
# leaseDuration: 15s
67
# renewDeadline: 10s
68
# retryPeriod: 2s
69
# resourceLock: "leases"
70
# resourceName: "descheduler"
71
# resourceNamespace: "kube-system"
72
73
# Pod Disruption Budget for the descheduler Deployment. Optional.
74
# Only rendered when kind is "Deployment". The descheduler runs a single replica
75
# by default, so this is disabled by default. Enable it for highly available
76
# setups (replicas > 1 with leaderElection enabled) to keep a descheduler pod
77
# available during voluntary node disruptions.
78
podDisruptionBudget:
79
enabled: false
80
# minAvailable and maxUnavailable are mutually exclusive; set only one.
81
minAvailable: 1
82
maxUnavailable: ""
83
# See https://kubernetes.io/docs/tasks/run-application/configure-pdb/
84
# unhealthyPodEvictionPolicy: IfHealthyBudget
85
annotations: {}
86
command:
87
- "/bin/descheduler"
88
cmdOptions:
89
v: 3
90
# Recommended to use the latest Policy API version supported by the Descheduler app version
91
deschedulerPolicyAPIVersion: "descheduler/v1alpha2"
92
# deschedulerPolicy contains the policies the descheduler will execute.
93
deschedulerPolicy:
94
# nodeSelector: "key1=value1,key2=value2"
95
# maxNoOfPodsToEvictPerNode: 10
96
# maxNoOfPodsToEvictPerNamespace: 10
97
# metricsProviders:
98
# - source: KubernetesMetrics
99
# tracing:
100
# collectorEndpoint: otel-collector.observability.svc.cluster.local:4317
101
# transportCert: ""
102
# serviceName: ""
103
# serviceNamespace: ""
104
# sampleRate: 1.0
105
# fallbackToNoOpProviderOnError: true
106
profiles:
107
- name: default
108
pluginConfig:
109
- name: DefaultEvictor
110
args:
111
podProtections:
112
defaultDisabled:
113
- "PodsWithLocalStorage"
114
extraEnabled:
115
- "PodsWithPVC"
116
- name: RemoveDuplicates
117
- name: RemovePodsHavingTooManyRestarts
118
args:
119
podRestartThreshold: 100
120
includingInitContainers: true
121
- name: RemovePodsViolatingNodeAffinity
122
args:
123
nodeAffinityType:
124
- requiredDuringSchedulingIgnoredDuringExecution
125
- name: RemovePodsViolatingNodeTaints
126
- name: RemovePodsViolatingInterPodAntiAffinity
127
- name: RemovePodsViolatingTopologySpreadConstraint
128
- name: LowNodeUtilization
129
args:
130
thresholds:
131
cpu: 20
132
memory: 20
133
pods: 20
134
targetThresholds:
135
cpu: 50
136
memory: 50
137
pods: 50
138
plugins:
139
balance:
140
enabled:
141
- RemoveDuplicates
142
- RemovePodsViolatingTopologySpreadConstraint
143
- LowNodeUtilization
144
deschedule:
145
enabled:
146
- RemovePodsHavingTooManyRestarts
147
- RemovePodsViolatingNodeTaints
148
- RemovePodsViolatingNodeAffinity
149
- RemovePodsViolatingInterPodAntiAffinity
150
priorityClassName: system-cluster-critical
151
# schedulerName is the name of the scheduler used to schedule the descheduler pods.
152
# Leave empty to use the cluster default scheduler.
153
schedulerName: ""
154
# runtimeClassName is the RuntimeClass applied to the descheduler pods.
155
# Leave empty to use the cluster default runtime.
156
runtimeClassName: ""
157
# Set the Pod spec `hostUsers` field to control user-namespace sharing.
158
# Default is not set (the cluster default applies). Set to `false` to opt into
159
# user-namespace isolation, or `true` to share the host user namespace.
160
# hostUsers: false
161
nodeSelector: {}
162
# foo: bar
163
164
affinity: {}
165
# nodeAffinity:
166
# requiredDuringSchedulingIgnoredDuringExecution:
167
# nodeSelectorTerms:
168
# - matchExpressions:
169
# - key: kubernetes.io/e2e-az-name
170
# operator: In
171
# values:
172
# - e2e-az1
173
# - e2e-az2
174
# podAntiAffinity:
175
# requiredDuringSchedulingIgnoredDuringExecution:
176
# - labelSelector:
177
# matchExpressions:
178
# - key: app.kubernetes.io/name
179
# operator: In
180
# values:
181
# - descheduler
182
# topologyKey: "kubernetes.io/hostname"
183
topologySpreadConstraints: []
184
# - maxSkew: 1
185
# topologyKey: kubernetes.io/hostname
186
# whenUnsatisfiable: DoNotSchedule
187
# labelSelector:
188
# matchLabels:
189
# app.kubernetes.io/name: descheduler
190
tolerations: []
191
# - key: 'management'
192
# operator: 'Equal'
193
# value: 'tool'
194
# effect: 'NoSchedule'
195
196
rbac:
197
# Specifies whether RBAC resources should be created
198
create: true
199
serviceAccount:
200
# Specifies whether a ServiceAccount should be created
201
create: true
202
# The name of the ServiceAccount to use.
203
# If not set and create is true, a name is generated using the fullname template
204
name:
205
# Specifies custom annotations for the serviceAccount
206
annotations: {}
207
# Opt out of API credential automounting
208
#
209
# automountServiceAccountToken Default is not set
210
# automountServiceAccountToken: true
211
# Mount the ServiceAccountToken in the Pod of a CronJob or Deployment
212
# Default is not set - but only implied by the ServiceAccount
213
# automountServiceAccountToken: true
214
215
# Annotations that'll be applied to deployment
216
deploymentAnnotations: {}
217
cronJobAnnotations: {}
218
cronJobLabels: {}
219
jobAnnotations: {}
220
jobLabels: {}
221
podAnnotations: {}
222
podLabels: {}
223
dnsConfig: {}
224
livenessProbe:
225
failureThreshold: 3
226
httpGet:
227
path: /healthz
228
port: 10258
229
scheme: HTTPS
230
initialDelaySeconds: 5
231
periodSeconds: 20
232
timeoutSeconds: 5
233
# Init containers to run before the main descheduler container
234
initContainers: []
235
# Example:
236
# - name: init-myservice
237
# image: busybox:1.28
238
# command: ['sh', '-c', 'echo The app is running! && sleep 10']
239
240
service:
241
enabled: false
242
# @param service.ipFamilyPolicy [string], support SingleStack, PreferDualStack and RequireDualStack
243
#
244
ipFamilyPolicy: ""
245
# @param service.ipFamilies [array] List of IP families (e.g. IPv4, IPv6) assigned to the service.
246
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/
247
# E.g.
248
# ipFamilies:
249
# - IPv6
250
# - IPv4
251
ipFamilies: []
252
serviceMonitor:
253
enabled: false
254
apiVersion: "monitoring.coreos.com/v1"
255
# The namespace where Prometheus expects to find service monitors.
256
# namespace: ""
257
# Add custom labels to the ServiceMonitor resource
258
additionalLabels: {}
259
# prometheus: kube-prometheus-stack
260
interval: ""
261
# honorLabels: true
262
insecureSkipVerify: true
263
serverName: null
264
metricRelabelings: []
265
# - action: keep
266
# regex: 'descheduler_(build_info|pods_evicted)'
267
# sourceLabels: [__name__]
268
relabelings: []
269
# - sourceLabels: [__meta_kubernetes_pod_node_name]
270
# separator: ;
271
# regex: ^(.*)$
272
# targetLabel: nodename
273
# replacement: $1
274
# action: replace
275
276
## Additional Volume mounts when automountServiceAccountToken is false
277
# extraServiceAccountVolumeMounts:
278
# - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
279
# name: kube-api-access
280
# readOnly: true
281
282
## Additional Volumes when automountServiceAccountToken is false
283
# extraServiceAccountVolumes:
284
# - name: kube-api-access
285
# projected:
286
# defaultMode: 0444
287
# sources:
288
# - configMap:
289
# items:
290
# - key: ca.crt
291
# path: ca.crt
292
# name: kube-root-ca.crt
293
# - downwardAPI:
294
# items:
295
# - fieldRef:
296
# apiVersion: v1
297
# fieldPath: metadata.namespace
298
# path: namespace
299
# - serviceAccountToken:
300
# expirationSeconds: 3600
301
# path: token
302

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.