1# Default values for descheduler.
2# This is a YAML-formatted file.
3# Declare variables to be passed into your templates.
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
13# - name: container-registry-secret
22 - containerPort: 10258
25 allowPrivilegeEscalation: false
30 readOnlyRootFilesystem: true
33# podSecurityContext -- [Security context for pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
39# -- Override the deployment namespace; defaults to .Release.Namespace
41# labels that'll be applied to all resources
43cronJobApiVersion: "batch/v1"
44schedule: "*/2 * * * *"
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.
53# Required when running as a Deployment
54deschedulingInterval: 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
60revisionHistoryLimit: 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
69# resourceLock: "leases"
70# resourceName: "descheduler"
71# resourceNamespace: "kube-system"
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.
80 # minAvailable and maxUnavailable are mutually exclusive; set only one.
83 # See https://kubernetes.io/docs/tasks/run-application/configure-pdb/
84 # unhealthyPodEvictionPolicy: IfHealthyBudget
90# Recommended to use the latest Policy API version supported by the Descheduler app version
91deschedulerPolicyAPIVersion: "descheduler/v1alpha2"
92# deschedulerPolicy contains the policies the descheduler will execute.
94 # nodeSelector: "key1=value1,key2=value2"
95 # maxNoOfPodsToEvictPerNode: 10
96 # maxNoOfPodsToEvictPerNamespace: 10
98 # - source: KubernetesMetrics
100 # collectorEndpoint: otel-collector.observability.svc.cluster.local:4317
103 # serviceNamespace: ""
105 # fallbackToNoOpProviderOnError: true
109 - name: DefaultEvictor
113 - "PodsWithLocalStorage"
116 - name: RemoveDuplicates
117 - name: RemovePodsHavingTooManyRestarts
119 podRestartThreshold: 100
120 includingInitContainers: true
121 - name: RemovePodsViolatingNodeAffinity
124 - requiredDuringSchedulingIgnoredDuringExecution
125 - name: RemovePodsViolatingNodeTaints
126 - name: RemovePodsViolatingInterPodAntiAffinity
127 - name: RemovePodsViolatingTopologySpreadConstraint
128 - name: LowNodeUtilization
142 - RemovePodsViolatingTopologySpreadConstraint
146 - RemovePodsHavingTooManyRestarts
147 - RemovePodsViolatingNodeTaints
148 - RemovePodsViolatingNodeAffinity
149 - RemovePodsViolatingInterPodAntiAffinity
150priorityClassName: 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.
154# runtimeClassName is the RuntimeClass applied to the descheduler pods.
155# Leave empty to use the cluster default runtime.
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.
166# requiredDuringSchedulingIgnoredDuringExecution:
169# - key: kubernetes.io/e2e-az-name
175# requiredDuringSchedulingIgnoredDuringExecution:
178# - key: app.kubernetes.io/name
182# topologyKey: "kubernetes.io/hostname"
183topologySpreadConstraints: []
185# topologyKey: kubernetes.io/hostname
186# whenUnsatisfiable: DoNotSchedule
189# app.kubernetes.io/name: descheduler
194# effect: 'NoSchedule'
197 # Specifies whether RBAC resources should be created
200 # Specifies whether a ServiceAccount should be created
202 # The name of the ServiceAccount to use.
203 # If not set and create is true, a name is generated using the fullname template
205 # Specifies custom annotations for the serviceAccount
207 # Opt out of API credential automounting
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
215# Annotations that'll be applied to deployment
216deploymentAnnotations: {}
217cronJobAnnotations: {}
230 initialDelaySeconds: 5
233# Init containers to run before the main descheduler container
236# - name: init-myservice
238# command: ['sh', '-c', 'echo The app is running! && sleep 10']
242 # @param service.ipFamilyPolicy [string], support SingleStack, PreferDualStack and RequireDualStack
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/
254 apiVersion: "monitoring.coreos.com/v1"
255 # The namespace where Prometheus expects to find service monitors.
257 # Add custom labels to the ServiceMonitor resource
259 # prometheus: kube-prometheus-stack
262 insecureSkipVerify: true
264 metricRelabelings: []
266 # regex: 'descheduler_(build_info|pods_evicted)'
267 # sourceLabels: [__name__]
269 # - sourceLabels: [__meta_kubernetes_pod_node_name]
272 # targetLabel: nodename
276## Additional Volume mounts when automountServiceAccountToken is false
277# extraServiceAccountVolumeMounts:
278# - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
279# name: kube-api-access
282## Additional Volumes when automountServiceAccountToken is false
283# extraServiceAccountVolumes:
284# - name: kube-api-access
292# name: kube-root-ca.crt
297# fieldPath: metadata.namespace
299# - serviceAccountToken:
300# expirationSeconds: 3600