카테고리 없음

[scheduler] descheduler - 설치

겸겸사 2022. 2. 17. 15:16

Descheduler 는 Kubernetes 의 Scheduler 를 직접적으로 호출하지않고 CRD 방식으로 여러가지 k8s scheduler 에 관련된 동작을 수행하게 해주는 MIG Kubernetes 중 하나이다. 

 

설치는 아래와같은 여러가지 방식으로 가능하다.

 

[Manifest 로 직접 설치, rbac, configmap, workload 구성]

Run As A Job

kubectl create -f kubernetes/base/rbac.yaml
kubectl create -f kubernetes/base/configmap.yaml
kubectl create -f kubernetes/job/job.yaml

Run As A CronJob

kubectl create -f kubernetes/base/rbac.yaml
kubectl create -f kubernetes/base/configmap.yaml
kubectl create -f kubernetes/cronjob/cronjob.yaml

Run As A Deployment

kubectl create -f kubernetes/base/rbac.yaml
kubectl create -f kubernetes/base/configmap.yaml
kubectl create -f kubernetes/deployment/deployment.yaml

 

[Helm 설치]

 - helm repo 등록

helm repo add descheduler https://kubernetes-sigs.github.io/descheduler/
helm install my-release --namespace kube-system descheduler/descheduler

 - helm install 수행

helm install --namespace kube-system my-release descheduler/descheduler

 - helm delete 방식

helm delete my-release

 - helm 설치시 여러가지 Configuration

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
serviceAccount.annotations Specifies custom annotations for the serviceAccount {}
nodeSelector Node selectors to run the descheduler cronjob/deployment on specific nodes nil
affinity Node affinity to run the descheduler cronjob/deployment on specific nodes nil
tolerations tolerations to run the descheduler cronjob/deployment on specific nodes nil
suspend Set spec.suspend in descheduler cronjob false
commonLabels Labels to apply to all resources {}
livenessProbe Liveness probe configuration for the descheduler container see values.yaml