diff --git a/.gitignore b/.gitignore index 71046180c..551d6c1bd 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ /karmada-controller-manager /karmada-interpreter-webhook-example /karmada-scheduler +/karmada-descheduler /karmada-scheduler-estimator /karmada-webhook /kubectl-karmada diff --git a/Makefile b/Makefile index 71dc5dc1d..69d0194bf 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ ifeq ($(VERSION), "") endif endif -all: karmada-aggregated-apiserver karmada-controller-manager karmada-scheduler karmadactl kubectl-karmada karmada-webhook karmada-agent karmada-scheduler-estimator karmada-interpreter-webhook-example +all: karmada-aggregated-apiserver karmada-controller-manager karmada-scheduler karmada-descheduler karmadactl kubectl-karmada karmada-webhook karmada-agent karmada-scheduler-estimator karmada-interpreter-webhook-example karmada-aggregated-apiserver: $(SOURCES) CGO_ENABLED=0 GOOS=$(GOOS) go build \ @@ -59,6 +59,12 @@ karmada-scheduler: $(SOURCES) -o karmada-scheduler \ cmd/scheduler/main.go +karmada-descheduler: $(SOURCES) + CGO_ENABLED=0 GOOS=$(GOOS) go build \ + -ldflags $(LDFLAGS) \ + -o karmada-descheduler \ + cmd/descheduler/main.go + karmadactl: $(SOURCES) CGO_ENABLED=0 GOOS=$(GOOS) go build \ -ldflags $(LDFLAGS) \ @@ -96,7 +102,7 @@ karmada-interpreter-webhook-example: $(SOURCES) examples/customresourceinterpreter/webhook/main.go clean: - rm -rf karmada-aggregated-apiserver karmada-controller-manager karmada-scheduler karmadactl kubectl-karmada karmada-webhook karmada-agent karmada-scheduler-estimator karmada-interpreter-webhook-example + rm -rf karmada-aggregated-apiserver karmada-controller-manager karmada-scheduler karmada-descheduler karmadactl kubectl-karmada karmada-webhook karmada-agent karmada-scheduler-estimator karmada-interpreter-webhook-example .PHONY: update update: @@ -112,7 +118,7 @@ test: go test --race --v ./cmd/... go test --race --v ./examples/... -images: image-karmada-aggregated-apiserver image-karmada-controller-manager image-karmada-scheduler image-karmada-webhook image-karmada-agent image-karmada-scheduler-estimator image-karmada-interpreter-webhook-example +images: image-karmada-aggregated-apiserver image-karmada-controller-manager image-karmada-scheduler image-karmada-descheduler image-karmada-webhook image-karmada-agent image-karmada-scheduler-estimator image-karmada-interpreter-webhook-example image-karmada-aggregated-apiserver: karmada-aggregated-apiserver VERSION=$(VERSION) hack/docker.sh karmada-aggregated-apiserver @@ -123,6 +129,9 @@ image-karmada-controller-manager: karmada-controller-manager image-karmada-scheduler: karmada-scheduler VERSION=$(VERSION) hack/docker.sh karmada-scheduler +image-karmada-descheduler: karmada-descheduler + VERSION=$(VERSION) hack/docker.sh karmada-descheduler + image-karmada-webhook: karmada-webhook VERSION=$(VERSION) hack/docker.sh karmada-webhook @@ -142,6 +151,7 @@ ifneq ($(REGISTRY_USER_NAME), "") endif docker push ${REGISTRY}/karmada-controller-manager:${VERSION} docker push ${REGISTRY}/karmada-scheduler:${VERSION} + docker push ${REGISTRY}/karmada-descheduler:${VERSION} docker push ${REGISTRY}/karmada-webhook:${VERSION} docker push ${REGISTRY}/karmada-agent:${VERSION} docker push ${REGISTRY}/karmada-scheduler-estimator:${VERSION} diff --git a/artifacts/deploy/karmada-descheduler.yaml b/artifacts/deploy/karmada-descheduler.yaml new file mode 100644 index 000000000..470fe46dc --- /dev/null +++ b/artifacts/deploy/karmada-descheduler.yaml @@ -0,0 +1,37 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: karmada-descheduler + namespace: karmada-system + labels: + app: karmada-descheduler +spec: + replicas: 2 + selector: + matchLabels: + app: karmada-descheduler + template: + metadata: + labels: + app: karmada-descheduler + spec: + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + containers: + - name: karmada-descheduler + image: swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-descheduler:latest + imagePullPolicy: IfNotPresent + command: + - /bin/karmada-descheduler + - --karmada-kubeconfig=/etc/kubeconfig + - --bind-address=0.0.0.0 + - --v=4 + volumeMounts: + - name: kubeconfig + subPath: kubeconfig + mountPath: /etc/kubeconfig + volumes: + - name: kubeconfig + secret: + secretName: kubeconfig diff --git a/cluster/images/karmada-descheduler/Dockerfile b/cluster/images/karmada-descheduler/Dockerfile new file mode 100644 index 000000000..727dcafc9 --- /dev/null +++ b/cluster/images/karmada-descheduler/Dockerfile @@ -0,0 +1,7 @@ +FROM alpine:3.7 + +RUN apk add --no-cache ca-certificates + +ADD karmada-descheduler /bin/ + +CMD ["/bin/karmada-descheduler"] diff --git a/hack/deploy-karmada.sh b/hack/deploy-karmada.sh index 344183d04..3f2762d11 100755 --- a/hack/deploy-karmada.sh +++ b/hack/deploy-karmada.sh @@ -233,6 +233,8 @@ kubectl config use-context "${HOST_CLUSTER_NAME}" kubectl apply -f "${REPO_ROOT}/artifacts/deploy/controller-manager.yaml" # deploy scheduler on host cluster kubectl apply -f "${REPO_ROOT}/artifacts/deploy/karmada-scheduler.yaml" +# deploy descheduler on host cluster +kubectl apply -f "${REPO_ROOT}/artifacts/deploy/karmada-descheduler.yaml" # deploy webhook on host cluster kubectl apply -f "${REPO_ROOT}/artifacts/deploy/karmada-webhook.yaml" diff --git a/hack/local-up-karmada.sh b/hack/local-up-karmada.sh index 2d31a8c52..80922b857 100755 --- a/hack/local-up-karmada.sh +++ b/hack/local-up-karmada.sh @@ -121,6 +121,7 @@ export VERSION="latest" export REGISTRY="swr.ap-southeast-1.myhuaweicloud.com/karmada" kind load docker-image "${REGISTRY}/karmada-controller-manager:${VERSION}" --name="${HOST_CLUSTER_NAME}" kind load docker-image "${REGISTRY}/karmada-scheduler:${VERSION}" --name="${HOST_CLUSTER_NAME}" +kind load docker-image "${REGISTRY}/karmada-descheduler:${VERSION}" --name="${HOST_CLUSTER_NAME}" kind load docker-image "${REGISTRY}/karmada-webhook:${VERSION}" --name="${HOST_CLUSTER_NAME}" kind load docker-image "${REGISTRY}/karmada-scheduler-estimator:${VERSION}" --name="${HOST_CLUSTER_NAME}" kind load docker-image "${REGISTRY}/karmada-aggregated-apiserver:${VERSION}" --name="${HOST_CLUSTER_NAME}"