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: latest@sha256:11aea7e23506a7ffaeedb80e46b6a3bed25d3fa45c8f5338fe9d271754d340f0
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
60# Specifies whether Leader Election resources should be created
61# Required when running as a Deployment
62# NOTE: Leader election can't be activated if DryRun enabled
68# resourceLock: "leases"
69# resourceName: "descheduler"
70# resourceNamespace: "kube-system"
76# Recommended to use the latest Policy API version supported by the Descheduler app version
77deschedulerPolicyAPIVersion: "descheduler/v1alpha2"
78# deschedulerPolicy contains the policies the descheduler will execute.
80 # nodeSelector: "key1=value1,key2=value2"
81 # maxNoOfPodsToEvictPerNode: 10
82 # maxNoOfPodsToEvictPerNamespace: 10
84 # - source: KubernetesMetrics
86 # collectorEndpoint: otel-collector.observability.svc.cluster.local:4317
89 # serviceNamespace: ""
91 # fallbackToNoOpProviderOnError: true
95 - name: DefaultEvictor
99 - "PodsWithLocalStorage"
102 - name: RemoveDuplicates
103 - name: RemovePodsHavingTooManyRestarts
105 podRestartThreshold: 100
106 includingInitContainers: true
107 - name: RemovePodsViolatingNodeAffinity
110 - requiredDuringSchedulingIgnoredDuringExecution
111 - name: RemovePodsViolatingNodeTaints
112 - name: RemovePodsViolatingInterPodAntiAffinity
113 - name: RemovePodsViolatingTopologySpreadConstraint
114 - name: LowNodeUtilization
128 - RemovePodsViolatingTopologySpreadConstraint
132 - RemovePodsHavingTooManyRestarts
133 - RemovePodsViolatingNodeTaints
134 - RemovePodsViolatingNodeAffinity
135 - RemovePodsViolatingInterPodAntiAffinity
136priorityClassName: system-cluster-critical
142# requiredDuringSchedulingIgnoredDuringExecution:
145# - key: kubernetes.io/e2e-az-name
151# requiredDuringSchedulingIgnoredDuringExecution:
154# - key: app.kubernetes.io/name
158# topologyKey: "kubernetes.io/hostname"
159topologySpreadConstraints: []
161# topologyKey: kubernetes.io/hostname
162# whenUnsatisfiable: DoNotSchedule
165# app.kubernetes.io/name: descheduler
170# effect: 'NoSchedule'
173 # Specifies whether RBAC resources should be created
176 # Specifies whether a ServiceAccount should be created
178 # The name of the ServiceAccount to use.
179 # If not set and create is true, a name is generated using the fullname template
181 # Specifies custom annotations for the serviceAccount
183 # Opt out of API credential automounting
185 # automountServiceAccountToken Default is not set
186 # automountServiceAccountToken: true
187# Mount the ServiceAccountToken in the Pod of a CronJob or Deployment
188# Default is not set - but only implied by the ServiceAccount
189# automountServiceAccountToken: true
191# Annotations that'll be applied to deployment
192deploymentAnnotations: {}
193cronJobAnnotations: {}
206 initialDelaySeconds: 5
209# Init containers to run before the main descheduler container
212# - name: init-myservice
214# command: ['sh', '-c', 'echo The app is running! && sleep 10']
218 # @param service.ipFamilyPolicy [string], support SingleStack, PreferDualStack and RequireDualStack
221 # @param service.ipFamilies [array] List of IP families (e.g. IPv4, IPv6) assigned to the service.
222 # Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/
230 # The namespace where Prometheus expects to find service monitors.
232 # Add custom labels to the ServiceMonitor resource
234 # prometheus: kube-prometheus-stack
237 insecureSkipVerify: true
239 metricRelabelings: []
241 # regex: 'descheduler_(build_info|pods_evicted)'
242 # sourceLabels: [__name__]
244 # - sourceLabels: [__meta_kubernetes_pod_node_name]
247 # targetLabel: nodename
251## Additional Volume mounts when automountServiceAccountToken is false
252# extraServiceAccountVolumeMounts:
253# - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
254# name: kube-api-access
257## Additional Volumes when automountServiceAccountToken is false
258# extraServiceAccountVolumes:
259# - name: kube-api-access
267# name: kube-root-ca.crt
272# fieldPath: metadata.namespace
274# - serviceAccountToken:
275# expirationSeconds: 3600