101 lines
2.9 KiB
YAML

# infrastructure/descheduler/helmrelease.yaml
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: descheduler
namespace: kube-system
spec:
interval: 30m
install:
remediation:
retries: 3
upgrade:
remediation:
retries: 3
chart:
spec:
chart: descheduler
version: 0.33.0
sourceRef:
kind: HelmRepository
name: descheduler
namespace: flux-system
values:
kind: CronJob
schedule: "*/20 * * * *"
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 3
resources:
requests:
cpu: 50m
memory: 96Mi
limits:
cpu: 200m
memory: 256Mi
deschedulerPolicyAPIVersion: descheduler/v1alpha2
deschedulerPolicy:
maxNoOfPodsToEvictPerNode: 2
maxNoOfPodsToEvictPerNamespace: 2
profiles:
- name: atlas-rpi-balance
pluginConfig:
- name: DefaultEvictor
args:
nodeFit: true
minPodAge: 10m
podProtections:
extraEnabled:
- PodsWithPVC
- PodsWithLocalStorage
- SystemCriticalPods
- name: RemovePodsHavingTooManyRestarts
args:
podRestartThreshold: 12
includingInitContainers: true
- name: RemovePodsViolatingNodeAffinity
args:
nodeAffinityType:
- requiredDuringSchedulingIgnoredDuringExecution
- name: RemovePodsViolatingTopologySpreadConstraint
- name: RemovePodsViolatingNodeTaints
- name: LowNodeUtilization
args:
thresholds:
cpu: 45
memory: 45
pods: 45
targetThresholds:
cpu: 75
memory: 75
pods: 75
plugins:
balance:
enabled:
- RemovePodsViolatingTopologySpreadConstraint
- LowNodeUtilization
deschedule:
enabled:
- RemovePodsHavingTooManyRestarts
- RemovePodsViolatingNodeTaints
- RemovePodsViolatingNodeAffinity
priorityClassName: system-cluster-critical
nodeSelector:
node-role.kubernetes.io/control-plane: "true"
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- titan-0a
tolerations:
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule