diff --git a/charts/README.md b/charts/README.md index c664d3b1a..e1b524160 100644 --- a/charts/README.md +++ b/charts/README.md @@ -33,6 +33,21 @@ $ kubectl get secret -n karmada-system karmada-kubeconfig -o jsonpath={.data.kub > **Tip**: List all releases using `helm list` +For better scheduling effect, you can choose to install the `karmada-descheduler` component in the karmada controller plane. Link: [here](../docs/descheduler.md). The following is the specific installation guide. + +Edited values.yaml for karmada-descheduler +```YAML +installMode: "component" +components: [ + "descheduler" +] +``` +Execute command (switch to the `root` directory of the repo, and sets the `current-context` in a kubeconfig file) +```console +$ kubectl config use-context host +$ helm install karmada-descheduler -n karmada-system ./charts +``` + ## Uninstalling the Chart To uninstall/delete the `karmada` helm release in namespace `karmada-system`: @@ -79,7 +94,7 @@ $ kubectl config use-context member $ helm install karmada-agent -n karmada-system --create-namespace ./charts ``` ### 2. Install component -Edited values.yaml +Edited values.yaml for karmada-scheduler-estimator ```YAML installMode: "component" components: [ @@ -108,6 +123,7 @@ Execute command (switch to the `root` directory of the repo, and sets the `curre $ kubectl config use-context host $ helm install karmada-scheduler-estimator -n karmada-system ./charts ``` + ## Configuration | Name | Description | Value | |------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/charts/templates/_helpers.tpl b/charts/templates/_helpers.tpl index 41fd25042..b03cfbd5f 100644 --- a/charts/templates/_helpers.tpl +++ b/charts/templates/_helpers.tpl @@ -118,6 +118,33 @@ app: {{$name}}-scheduler {{- end -}} +{{- define "karmada.descheduler.labels" -}} +{{ $name := include "karmada.name" . }} +{{- if .Values.descheduler.labels -}} +{{- range $key, $value := .Values.descheduler.labels}} +{{ $key }}: {{ $value }} +{{- end -}} +{{- else -}} +app: {{$name}} +{{- end -}} +{{- end -}} + +{{- define "karmada.descheduler.podLabels" -}} +{{ $name := include "karmada.name" .}} +{{- if .Values.descheduler.podLabels }} +{{- range $key, $value := .Values.descheduler.podLabels}} +{{ $key }}: {{ $value }} +{{- end}} +{{- end }} +{{- end -}} + +{{- define "karmada.descheduler.kubeconfig.volume" -}} +- name: kubeconfig-secret + secret: + secretName: karmada-kubeconfig +{{- end -}} + + {{- define "karmada.webhook.labels" -}} {{ $name := include "karmada.name" .}} {{- if .Values.webhook.labels }} diff --git a/charts/templates/karmada_descheduler.yaml b/charts/templates/karmada_descheduler.yaml new file mode 100644 index 000000000..9cd03a564 --- /dev/null +++ b/charts/templates/karmada_descheduler.yaml @@ -0,0 +1,60 @@ +{{- $name := include "karmada.name" . -}} +{{- if and (eq .Values.installMode "component") (has "descheduler" .Values.components) }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ $name }} + namespace: {{ include "karmada.namespace" . }} + labels: + {{- include "karmada.descheduler.labels" . | nindent 4}} +spec: + replicas: {{ .Values.descheduler.replicaCount }} + selector: + matchLabels: + {{- include "karmada.descheduler.labels" . | nindent 6}} + {{- with .Values.descheduler.strategy }} + strategy: + {{- toYaml . | nindent 8 }} + {{- end }} + template: + metadata: + {{- with .Values.descheduler.podAnnotations}} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "karmada.descheduler.labels" . | nindent 8}} + {{- include "karmada.descheduler.podLabels" . | nindent 8}} + spec: + {{- with .Values.descheduler.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.descheduler.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.descheduler.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.descheduler.tolerations}} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ $name }} + image: {{ .Values.descheduler.image.repository}}:{{ .Values.descheduler.image.tag | default "latest" }} + imagePullPolicy: {{ .Values.descheduler.image.pullPolicy }} + command: + - /bin/karmada-descheduler + - --kubeconfig=/etc/kubeconfig + - --bind-address=0.0.0.0 + - --v=4 + volumeMounts: + {{- include "karmada.kubeconfig.volumeMount" . | nindent 12 }} + resources: + {{- toYaml .Values.descheduler.resources | nindent 12 }} + volumes: + {{- include "karmada.descheduler.kubeconfig.volume" . | nindent 8}} +{{- end }} diff --git a/charts/values.yaml b/charts/values.yaml index 9c1d071fc..0b3851840 100644 --- a/charts/values.yaml +++ b/charts/values.yaml @@ -15,6 +15,7 @@ clusterDomain: "cluster.local" components: [] # components: [ # "schedulerEstimator" + # "descheduler" # ] ## pre-install job config @@ -547,3 +548,47 @@ schedulerEstimator: rollingUpdate: maxUnavailable: 0 maxSurge: 50% + +## descheduler config +descheduler: + ## @param descheduler.labels + labels: + app: karmada-descheduler + ## @param descheduler.replicaCount target replicas + replicaCount: 2 + ## @param descheduler.podAnnotations + podAnnotations: { } + ## @param descheduler.podLabels + podLabels: { } + ## @param descheduler.imagePullSecrets + imagePullSecrets: [ ] + image: + ## @param descheduler.image.repository image of the descheduler + repository: swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-descheduler + ## @param descheduler.image.pullPolicy pull policy of image + pullPolicy: IfNotPresent + ## @param descheduler.image.tag overrides the image tag whose default is the latest + tag: latest + ## @param descheduler.resources + resources: { } + # If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + ## @param descheduler.nodeSelector + nodeSelector: { } + ## @param descheduler.affinity + affinity: { } + ## @param descheduler.tolerations + tolerations: [ ] + # - key: node-role.kubernetes.io/master + # operator: Exists + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 0 + maxSurge: 50%