Skip to content
This repository has been archived by the owner on Dec 22, 2023. It is now read-only.
/ wao-scheduler-v1 Public archive
forked from kaz260/WAO-Scheduler

Workload Allocation Optimizer scheduler plugin based on Kubernetes scheduling framework

License

Notifications You must be signed in to change notification settings

waok8s/wao-scheduler-v1

 
 

Repository files navigation

Important

This repository is no longer being maintained. Please use the new WAO Scheduler instead.

WAO-Scheduler plugin


Kubernetes is a portable, extensible, open source platform for facilitating declarative configuration management and automation, and managing containerized workloads and services. Kubernetes has a huge and fast-growing ecosystem with a wide range of services, support and tools available.

This Document shows the steps to build and deploy Workload Allocation Optimizer (WAO)-Scheduler with power minimizing policy.


Architecture overview

WAO-scheduler gets the CPU usage of each node with Metrics-server, also gets the ambient temperature and CPU temperature with ipmi_exporter. Then WAO-Scheduler predicts power increases with Tensorflow-serving and score the nodes. Finally, WAO-Scheduler selects the node that is expected to the power increases is minimum. architecture

Prerequisites

Build WAO-Scheduler with power minimization policy

git checkout release-v1.25
make test
make build-bin

Deploy to Kubernetes

1. Create a Docker image for scheduler

git checkout release-v1.25
IMAGE_REGISTRY=${YOUR_REPO} make build-image
IMAGE_REGISTRY=${YOUR_REPO} make push-image

2. Preparing to start WAO-Scheduler

Launch metrics-server

Check the compatibility matrix

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

Launch tensorflow serving

kubectl apply -f example/tensorflow-server-dep.yaml
kubectl apply -f example/tensorflow-server-svc.yaml

Label nodes

Give each node the following label:

  • ambient/max: Maximum ambient temperature in celsius.
  • ambient/min: Minimum ambient temperature in celsius.
  • cpu1/max: Maximum CPU1 temperature in celsius.
  • cpu1/min: Minimum CPU1 temperature in celsius.
  • cpu2/max: Maximum CPU2 temperature in celsius.
  • cpu2/min: Minimum CPU2 temperature in celsius.
  • tensorflow/host: IP address of tensorflow serving.

3. launch MinimizePower scheduler

kubectl apply -f example/wao-scheduler-cm.yaml
kubectl apply -f example/wao-scheduler-sa.yaml
kubectl apply -f example/wao-scheduler-pod.yaml

Success if you can confirm the startup on each node with the following command (Successful if the pod status is Running)

kubectl get pod -n kube-system -o wide | grep wao-scheduler

If you want to use wao-scheduler, please refer test.yaml.

kubectl apply -f test.yaml

License

Apache License 2.0, see LICENSE.

About

Workload Allocation Optimizer scheduler plugin based on Kubernetes scheduling framework

Resources

License

Stars

Watchers

Forks

Languages

  • Go 96.5%
  • Shell 2.3%
  • Other 1.2%