From 449383caa3da34d773f32d14569cef5f6421ff27 Mon Sep 17 00:00:00 2001 From: Aditya Purandare Date: Thu, 20 May 2021 17:04:05 -0700 Subject: [PATCH 1/2] Add run descheduler as deployment files and update README --- README.md | 16 ++++++- kubernetes/deployment/deployment.yaml | 54 ++++++++++++++++++++++++ kubernetes/deployment/kustomization.yaml | 6 +++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 kubernetes/deployment/deployment.yaml create mode 100644 kubernetes/deployment/kustomization.yaml diff --git a/README.md b/README.md index c3a4e0169..69e3e1a0f 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Table of Contents - [Quick Start](#quick-start) - [Run As A Job](#run-as-a-job) - [Run As A CronJob](#run-as-a-cronjob) + - [Run As A Deployment](#run-as-a-deployment) - [Install Using Helm](#install-using-helm) - [Install Using Kustomize](#install-using-kustomize) - [User Guide](#user-guide) @@ -56,7 +57,7 @@ Table of Contents ## Quick Start -The descheduler can be run as a Job or CronJob inside of a k8s cluster. It has the +The descheduler can be run as a Job or CronJob or Deployment inside of a k8s cluster. It has the advantage of being able to be run multiple times without needing user intervention. The descheduler pod is run as a critical pod in the `kube-system` namespace to avoid being evicted by itself or by the kubelet. @@ -77,6 +78,14 @@ 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 +``` + ### Install Using Helm Starting with release v0.18.0 there is an official helm chart that can be used to install the @@ -99,6 +108,11 @@ Run As A CronJob kustomize build 'github.com/kubernetes-sigs/descheduler/kubernetes/cronjob?ref=v0.21.0' | kubectl apply -f - ``` +Run As A Deployment +``` +kustomize build 'github.com/kubernetes-sigs/descheduler/kubernetes/deployment?ref=v0.21.0' | kubectl apply -f - +``` + ## User Guide See the [user guide](docs/user-guide.md) in the `/docs` directory. diff --git a/kubernetes/deployment/deployment.yaml b/kubernetes/deployment/deployment.yaml new file mode 100644 index 000000000..74fbbc89d --- /dev/null +++ b/kubernetes/deployment/deployment.yaml @@ -0,0 +1,54 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: descheduler + namespace: kube-system + labels: + app: descheduler +spec: + replicas: 1 + selector: + matchLabels: + app: descheduler + template: + metadata: + labels: + app: descheduler + spec: + priorityClassName: system-cluster-critical + serviceAccountName: descheduler-sa + containers: + - name: descheduler + image: k8s.gcr.io/descheduler/descheduler:v0.21.0 + imagePullPolicy: IfNotPresent + command: + - "/bin/descheduler" + args: + - "--policy-config-file" + - "/policy-dir/policy.yaml" + - "--descheduling-interval" + - "5m" + - "--v" + - "3" + ports: + - containerPort: 10258 + protocol: TCP + resources: + requests: + cpu: 500m + memory: 256Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsNonRoot: true + volumeMounts: + - mountPath: /policy-dir + name: policy-volume + volumes: + - name: policy-volume + configMap: + name: descheduler-policy-configmap diff --git a/kubernetes/deployment/kustomization.yaml b/kubernetes/deployment/kustomization.yaml new file mode 100644 index 000000000..2e5bbb46d --- /dev/null +++ b/kubernetes/deployment/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../base + - deployment.yaml From 646c13ae151e91d3806188189212cf5050bed8d6 Mon Sep 17 00:00:00 2001 From: Aditya Purandare Date: Fri, 21 May 2021 12:42:51 -0700 Subject: [PATCH 2/2] Fix grammar and indentation issue for deployment resource --- README.md | 2 +- kubernetes/deployment/deployment.yaml | 90 +++++++++++++-------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 69e3e1a0f..152d0cdfc 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Table of Contents ## Quick Start -The descheduler can be run as a Job or CronJob or Deployment inside of a k8s cluster. It has the +The descheduler can be run as a `Job`, `CronJob`, or `Deployment` inside of a k8s cluster. It has the advantage of being able to be run multiple times without needing user intervention. The descheduler pod is run as a critical pod in the `kube-system` namespace to avoid being evicted by itself or by the kubelet. diff --git a/kubernetes/deployment/deployment.yaml b/kubernetes/deployment/deployment.yaml index 74fbbc89d..304afd4e1 100644 --- a/kubernetes/deployment/deployment.yaml +++ b/kubernetes/deployment/deployment.yaml @@ -6,49 +6,49 @@ metadata: labels: app: descheduler spec: - replicas: 1 - selector: - matchLabels: + replicas: 1 + selector: + matchLabels: + app: descheduler + template: + metadata: + labels: app: descheduler - template: - metadata: - labels: - app: descheduler - spec: - priorityClassName: system-cluster-critical - serviceAccountName: descheduler-sa - containers: - - name: descheduler - image: k8s.gcr.io/descheduler/descheduler:v0.21.0 - imagePullPolicy: IfNotPresent - command: - - "/bin/descheduler" - args: - - "--policy-config-file" - - "/policy-dir/policy.yaml" - - "--descheduling-interval" - - "5m" - - "--v" - - "3" - ports: - - containerPort: 10258 - protocol: TCP - resources: - requests: - cpu: 500m - memory: 256Mi - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - privileged: false - readOnlyRootFilesystem: true - runAsNonRoot: true - volumeMounts: - - mountPath: /policy-dir - name: policy-volume - volumes: - - name: policy-volume - configMap: - name: descheduler-policy-configmap + spec: + priorityClassName: system-cluster-critical + serviceAccountName: descheduler-sa + containers: + - name: descheduler + image: k8s.gcr.io/descheduler/descheduler:v0.21.0 + imagePullPolicy: IfNotPresent + command: + - "/bin/descheduler" + args: + - "--policy-config-file" + - "/policy-dir/policy.yaml" + - "--descheduling-interval" + - "5m" + - "--v" + - "3" + ports: + - containerPort: 10258 + protocol: TCP + resources: + requests: + cpu: 500m + memory: 256Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsNonRoot: true + volumeMounts: + - mountPath: /policy-dir + name: policy-volume + volumes: + - name: policy-volume + configMap: + name: descheduler-policy-configmap