mirror of
https://github.com/kubernetes-sigs/descheduler.git
synced 2026-01-26 05:14:13 +01:00
298 lines
7.8 KiB
YAML
298 lines
7.8 KiB
YAML
# Default values for descheduler.
|
|
# This is a YAML-formatted file.
|
|
# Declare variables to be passed into your templates.
|
|
|
|
# CronJob or Deployment
|
|
kind: CronJob
|
|
|
|
image:
|
|
repository: registry.k8s.io/descheduler/descheduler
|
|
# Overrides the image tag whose default is the chart version
|
|
tag: ""
|
|
pullPolicy: IfNotPresent
|
|
|
|
imagePullSecrets:
|
|
# - name: container-registry-secret
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 500m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 256Mi
|
|
|
|
ports:
|
|
- containerPort: 10258
|
|
protocol: TCP
|
|
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
privileged: false
|
|
readOnlyRootFilesystem: true
|
|
runAsNonRoot: true
|
|
runAsUser: 1000
|
|
|
|
# podSecurityContext -- [Security context for pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
|
|
podSecurityContext: {}
|
|
# fsGroup: 1000
|
|
|
|
nameOverride: ""
|
|
fullnameOverride: ""
|
|
|
|
# -- Override the deployment namespace; defaults to .Release.Namespace
|
|
namespaceOverride: ""
|
|
|
|
# labels that'll be applied to all resources
|
|
commonLabels: {}
|
|
|
|
cronJobApiVersion: "batch/v1"
|
|
schedule: "*/2 * * * *"
|
|
suspend: false
|
|
# startingDeadlineSeconds: 200
|
|
# successfulJobsHistoryLimit: 3
|
|
# failedJobsHistoryLimit: 1
|
|
# ttlSecondsAfterFinished: 600
|
|
# activeDeadlineSeconds: 60 # Make sure this value is SHORTER than the cron interval.
|
|
# timeZone: Etc/UTC
|
|
|
|
# Required when running as a Deployment
|
|
deschedulingInterval: 5m
|
|
|
|
# Specifies the replica count for Deployment
|
|
# Set leaderElection if you want to use more than 1 replica
|
|
# Set affinity.podAntiAffinity rule if you want to schedule onto a node
|
|
# only if that node is in the same zone as at least one already-running descheduler
|
|
replicas: 1
|
|
|
|
# Specifies whether Leader Election resources should be created
|
|
# Required when running as a Deployment
|
|
# NOTE: Leader election can't be activated if DryRun enabled
|
|
leaderElection: {}
|
|
# enabled: true
|
|
# leaseDuration: 15s
|
|
# renewDeadline: 10s
|
|
# retryPeriod: 2s
|
|
# resourceLock: "leases"
|
|
# resourceName: "descheduler"
|
|
# resourceNamespace: "kube-system"
|
|
|
|
command:
|
|
- "/bin/descheduler"
|
|
|
|
cmdOptions:
|
|
v: 3
|
|
|
|
# Recommended to use the latest Policy API version supported by the Descheduler app version
|
|
deschedulerPolicyAPIVersion: "descheduler/v1alpha2"
|
|
|
|
# deschedulerPolicy contains the policies the descheduler will execute.
|
|
deschedulerPolicy:
|
|
# nodeSelector: "key1=value1,key2=value2"
|
|
# maxNoOfPodsToEvictPerNode: 10
|
|
# maxNoOfPodsToEvictPerNamespace: 10
|
|
# metricsProviders:
|
|
# - source: KubernetesMetrics
|
|
# tracing:
|
|
# collectorEndpoint: otel-collector.observability.svc.cluster.local:4317
|
|
# transportCert: ""
|
|
# serviceName: ""
|
|
# serviceNamespace: ""
|
|
# sampleRate: 1.0
|
|
# fallbackToNoOpProviderOnError: true
|
|
profiles:
|
|
- name: default
|
|
pluginConfig:
|
|
- name: DefaultEvictor
|
|
args:
|
|
podProtections:
|
|
defaultDisabled:
|
|
- "PodsWithLocalStorage"
|
|
extraEnabled:
|
|
- "PodsWithPVC"
|
|
- name: RemoveDuplicates
|
|
- name: RemovePodsHavingTooManyRestarts
|
|
args:
|
|
podRestartThreshold: 100
|
|
includingInitContainers: true
|
|
- name: RemovePodsViolatingNodeAffinity
|
|
args:
|
|
nodeAffinityType:
|
|
- requiredDuringSchedulingIgnoredDuringExecution
|
|
- name: RemovePodsViolatingNodeTaints
|
|
- name: RemovePodsViolatingInterPodAntiAffinity
|
|
- name: RemovePodsViolatingTopologySpreadConstraint
|
|
- name: LowNodeUtilization
|
|
args:
|
|
thresholds:
|
|
cpu: 20
|
|
memory: 20
|
|
pods: 20
|
|
targetThresholds:
|
|
cpu: 50
|
|
memory: 50
|
|
pods: 50
|
|
plugins:
|
|
balance:
|
|
enabled:
|
|
- RemoveDuplicates
|
|
- RemovePodsViolatingTopologySpreadConstraint
|
|
- LowNodeUtilization
|
|
deschedule:
|
|
enabled:
|
|
- RemovePodsHavingTooManyRestarts
|
|
- RemovePodsViolatingNodeTaints
|
|
- RemovePodsViolatingNodeAffinity
|
|
- RemovePodsViolatingInterPodAntiAffinity
|
|
|
|
priorityClassName: system-cluster-critical
|
|
|
|
nodeSelector: {}
|
|
# foo: bar
|
|
|
|
affinity: {}
|
|
# nodeAffinity:
|
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
|
# nodeSelectorTerms:
|
|
# - matchExpressions:
|
|
# - key: kubernetes.io/e2e-az-name
|
|
# operator: In
|
|
# values:
|
|
# - e2e-az1
|
|
# - e2e-az2
|
|
# podAntiAffinity:
|
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
|
# - labelSelector:
|
|
# matchExpressions:
|
|
# - key: app.kubernetes.io/name
|
|
# operator: In
|
|
# values:
|
|
# - descheduler
|
|
# topologyKey: "kubernetes.io/hostname"
|
|
topologySpreadConstraints: []
|
|
# - maxSkew: 1
|
|
# topologyKey: kubernetes.io/hostname
|
|
# whenUnsatisfiable: DoNotSchedule
|
|
# labelSelector:
|
|
# matchLabels:
|
|
# app.kubernetes.io/name: descheduler
|
|
tolerations: []
|
|
# - key: 'management'
|
|
# operator: 'Equal'
|
|
# value: 'tool'
|
|
# effect: 'NoSchedule'
|
|
|
|
rbac:
|
|
# Specifies whether RBAC resources should be created
|
|
create: true
|
|
|
|
serviceAccount:
|
|
# Specifies whether a ServiceAccount should be created
|
|
create: true
|
|
# The name of the ServiceAccount to use.
|
|
# If not set and create is true, a name is generated using the fullname template
|
|
name:
|
|
# Specifies custom annotations for the serviceAccount
|
|
annotations: {}
|
|
# Opt out of API credential automounting
|
|
#
|
|
# automountServiceAccountToken Default is not set
|
|
# automountServiceAccountToken: true
|
|
|
|
# Mount the ServiceAccountToken in the Pod of a CronJob or Deployment
|
|
# Default is not set - but only implied by the ServiceAccount
|
|
# automountServiceAccountToken: true
|
|
|
|
# Annotations that'll be applied to deployment
|
|
deploymentAnnotations: {}
|
|
|
|
cronJobAnnotations: {}
|
|
|
|
cronJobLabels: {}
|
|
|
|
jobAnnotations: {}
|
|
|
|
jobLabels: {}
|
|
|
|
podAnnotations: {}
|
|
|
|
podLabels: {}
|
|
|
|
dnsConfig: {}
|
|
|
|
livenessProbe:
|
|
failureThreshold: 3
|
|
httpGet:
|
|
path: /healthz
|
|
port: 10258
|
|
scheme: HTTPS
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 20
|
|
timeoutSeconds: 5
|
|
|
|
service:
|
|
enabled: false
|
|
# @param service.ipFamilyPolicy [string], support SingleStack, PreferDualStack and RequireDualStack
|
|
#
|
|
ipFamilyPolicy: ""
|
|
# @param service.ipFamilies [array] List of IP families (e.g. IPv4, IPv6) assigned to the service.
|
|
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/
|
|
# E.g.
|
|
# ipFamilies:
|
|
# - IPv6
|
|
# - IPv4
|
|
ipFamilies: []
|
|
|
|
serviceMonitor:
|
|
enabled: false
|
|
# The namespace where Prometheus expects to find service monitors.
|
|
# namespace: ""
|
|
# Add custom labels to the ServiceMonitor resource
|
|
additionalLabels: {}
|
|
# prometheus: kube-prometheus-stack
|
|
interval: ""
|
|
# honorLabels: true
|
|
insecureSkipVerify: true
|
|
serverName: null
|
|
metricRelabelings: []
|
|
# - action: keep
|
|
# regex: 'descheduler_(build_info|pods_evicted)'
|
|
# sourceLabels: [__name__]
|
|
relabelings: []
|
|
# - sourceLabels: [__meta_kubernetes_pod_node_name]
|
|
# separator: ;
|
|
# regex: ^(.*)$
|
|
# targetLabel: nodename
|
|
# replacement: $1
|
|
# action: replace
|
|
|
|
## Additional Volume mounts when automountServiceAccountToken is false
|
|
# extraServiceAccountVolumeMounts:
|
|
# - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
|
|
# name: kube-api-access
|
|
# readOnly: true
|
|
|
|
## Additional Volumes when automountServiceAccountToken is false
|
|
# extraServiceAccountVolumes:
|
|
# - name: kube-api-access
|
|
# projected:
|
|
# defaultMode: 0444
|
|
# sources:
|
|
# - configMap:
|
|
# items:
|
|
# - key: ca.crt
|
|
# path: ca.crt
|
|
# name: kube-root-ca.crt
|
|
# - downwardAPI:
|
|
# items:
|
|
# - fieldRef:
|
|
# apiVersion: v1
|
|
# fieldPath: metadata.namespace
|
|
# path: namespace
|
|
# - serviceAccountToken:
|
|
# expirationSeconds: 3600
|
|
# path: token
|