Descheduler for Kubernetes
Descheduler for Kubernetes is used to rebalance clusters by evicting pods that can potentially be scheduled on better nodes. In the current implementation, descheduler does not schedule replacement of evicted pods but relies on the default scheduler for that.
TL;DR:
helm repo add descheduler https://kubernetes-sigs.github.io/descheduler/
helm install my-release --namespace kube-system descheduler/descheduler
Introduction
This chart bootstraps a descheduler cron job on a Kubernetes cluster using the Helm package manager.
Prerequisites
- Kubernetes 1.14+
Installing the Chart
To install the chart with the release name my-release:
helm install --namespace kube-system my-release descheduler/descheduler
The command deploys descheduler on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.
Tip
: List all releases using
helm list
Uninstalling the Chart
To uninstall/delete the my-release deployment:
helm delete my-release
The command removes all the Kubernetes components associated with the chart and deletes the release.
Configuration
The following table lists the configurable parameters of the descheduler chart and their default values.
| Parameter | Description | Default |
|---|---|---|
kind |
Use as CronJob or Deployment | CronJob |
image.repository |
Docker repository to use | k8s.gcr.io/descheduler/descheduler |
image.tag |
Docker tag to use | v[chart appVersion] |
image.pullPolicy |
Docker image pull policy | IfNotPresent |
imagePullSecrets |
Docker repository secrets | [] |
nameOverride |
String to partially override descheduler.fullname template (will prepend the release name) |
"" |
fullnameOverride |
String to fully override descheduler.fullname template |
"" |
cronJobApiVersion |
CronJob API Group Version | "batch/v1" |
schedule |
The cron schedule to run the descheduler job on | "*/2 * * * *" |
startingDeadlineSeconds |
If set, configure startingDeadlineSeconds for the descheduler job |
nil |
successfulJobsHistoryLimit |
If set, configure successfulJobsHistoryLimit for the descheduler job |
nil |
failedJobsHistoryLimit |
If set, configure failedJobsHistoryLimit for the descheduler job |
nil |
deschedulingInterval |
If using kind:Deployment, sets time between consecutive descheduler executions. | 5m |
cmdOptions |
The options to pass to the descheduler command | see values.yaml |
deschedulerPolicy.strategies |
The descheduler strategies to apply | see values.yaml |
priorityClassName |
The name of the priority class to add to pods | system-cluster-critical |
rbac.create |
If true, create & use RBAC resources |
true |
podSecurityPolicy.create |
If true, create PodSecurityPolicy |
true |
resources |
Descheduler container CPU and memory requests/limits | see values.yaml |
serviceAccount.create |
If true, create a service account for the cron job |
true |
serviceAccount.name |
The name of the service account to use, if not set and create is true a name is generated using the fullname template | nil |
nodeSelector |
Node selectors to run the descheduler cronjob on specific nodes | nil |
tolerations |
tolerations to run the descheduler cronjob on specific nodes | nil |
suspend |
Set spec.suspend in descheduler cronjob | false |