cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

descheduler.yaml (3323B)


      1 apiVersion: v1
      2 kind: Namespace
      3 metadata:
      4   name: descheduler
      5 ---
      6 apiVersion: source.toolkit.fluxcd.io/v1
      7 kind: HelmRepository
      8 metadata:
      9   name: descheduler
     10   namespace: descheduler
     11 spec:
     12   interval: 24h
     13   url: https://kubernetes-sigs.github.io/descheduler/
     14 ---
     15 apiVersion: helm.toolkit.fluxcd.io/v2
     16 kind: HelmRelease
     17 metadata:
     18   name: descheduler
     19   namespace: descheduler
     20 spec:
     21   interval: 30m
     22   chart:
     23     spec:
     24       chart: descheduler
     25       version: "0.35.1"
     26       sourceRef:
     27         kind: HelmRepository
     28         name: descheduler
     29         namespace: descheduler
     30       interval: 12h
     31   values:
     32     schedule: "*/30 * * * *"
     33     tolerations:
     34       - key: "arch"
     35         operator: "Equal"
     36         value: "arm64"
     37         effect: "NoSchedule"
     38     service:
     39       enabled: true
     40       ipFamilyPolicy: PreferDualStack
     41       ipFamilies:
     42         - IPv6
     43         - IPv4
     44     serviceMonitor:
     45       enabled: true
     46     podSecurityContext:
     47       seccompProfile:
     48         type: RuntimeDefault
     49     deschedulerPolicy:
     50       profiles:
     51         - name: default
     52           pluginConfig:
     53             - name: DefaultEvictor
     54               args:
     55                 ignorePvcPods: true
     56                 evictLocalStoragePods: true
     57             - name: RemoveDuplicates
     58             - name: RemovePodsHavingTooManyRestarts
     59               args:
     60                 podRestartThreshold: 100
     61                 includingInitContainers: true
     62             - name: RemovePodsViolatingNodeAffinity
     63               args:
     64                 nodeAffinityType:
     65                   - requiredDuringSchedulingIgnoredDuringExecution
     66             - name: RemovePodsViolatingNodeTaints
     67             - name: RemovePodsViolatingInterPodAntiAffinity
     68             - name: RemovePodsViolatingTopologySpreadConstraint
     69             - name: LowNodeUtilization
     70               args:
     71                 thresholds:
     72                   cpu: 20
     73                   memory: 20
     74                   pods: 20
     75                 targetThresholds:
     76                   cpu: 70
     77                   memory: 80
     78                   pods: 60
     79             - name: HighNodeUtilization
     80               args:
     81                 thresholds:
     82                   cpu: 80
     83                   memory: 85
     84                   pods: 65
     85           plugins:
     86             balance:
     87               enabled:
     88                 - RemoveDuplicates
     89                 - RemovePodsViolatingTopologySpreadConstraint
     90                 - LowNodeUtilization
     91                 #- HighNodeUtilization
     92             deschedule:
     93               enabled:
     94                 - RemovePodsHavingTooManyRestarts
     95                 - RemovePodsViolatingNodeTaints
     96                 - RemovePodsViolatingNodeAffinity
     97                 - RemovePodsViolatingInterPodAntiAffinity
     98 ---
     99 # The descheduler chart (v0.35.0) does not include PVC list/watch in its
    100 # default ClusterRole, but it's required for ignorePvcPods: true.
    101 apiVersion: rbac.authorization.k8s.io/v1
    102 kind: ClusterRole
    103 metadata:
    104   name: descheduler-pvc-reader
    105 rules:
    106   - apiGroups: [""]
    107     resources: ["persistentvolumeclaims"]
    108     verbs: ["get", "list", "watch"]
    109 ---
    110 apiVersion: rbac.authorization.k8s.io/v1
    111 kind: ClusterRoleBinding
    112 metadata:
    113   name: descheduler-pvc-reader
    114 roleRef:
    115   apiGroup: rbac.authorization.k8s.io
    116   kind: ClusterRole
    117   name: descheduler-pvc-reader
    118 subjects:
    119   - kind: ServiceAccount
    120     name: descheduler
    121     namespace: descheduler