A Kubernetes Controller that proactively evicts Pods approaching their memory limits, enabling graceful shutdowns before OOM (Out of Memory) termination occurs.
The controller has been tested and built with the following components:
- Kubernetes >= 1.32.1
- Metric Server >= 0.7.2
helm repo add maxlaverse https://maxlaverse.github.io/helm-charts/
helm repo update
helm install soft-pod-memory-evicter maxlaverse/soft-pod-memory-evicter
The controller can be configured by setting Helm values under extraArgs: []
with any of the options listed in the Usage section below. For a complete list of configurable Helm values, please refer to the values.yaml file.
NAME:
soft-pod-memory-evicter - Gracefully evict Pods before they get OOM killed
USAGE:
soft-pod-memory-evicter [global options] command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--dry-run Output additional debug lines (default: false)
--pod-selector value Evict only Pods matching this label selector
--eviction-pause value Pause duration between evictions (default: 5m0s)
--memory-usage-check-interval value Interval at which the Pod metrics are checked (default: 3m0s)
--memory-usage-threshold value Memory usage eviction threshold (0-100) (default: 95)
--channel-queue-size value Size of the queue for pod eviction (default: 100)
--ignore-namespace value [ --ignore-namespace value ] Do not evict Pods from this namespace. Can be used multiple times
--loglevel value, -v value Log Level (default: 0)
--help, -h show help
Pods can be configured individually using annotations to override the default behavior:
soft-pod-memory-evicter.laverse.net/memory-usage-threshold
: Specifies the memory usage threshold (0-100) at which the Pod should be evicted. This value overrides the global threshold set by the--memory-usage-threshold
flag.
Example:
apiVersion: v1
kind: Pod
metadata:
annotations:
soft-pod-memory-evicter.laverse.net/memory-usage-threshold: "80"
Distributed under the Apache License. See LICENSE for more information.