Microscaling Engine
Go Makefile
Latest commit 45b22cb Jan 18, 2017 @rossf7 rossf7 committed on GitHub Merge pull request #40 from microscaling/k8s-labels
Get image from k8s deployment object so labels can be retrieved from the MicroBadger API
Permalink
Failed to load latest commit information.
Godeps Add aws-sdk-go dependency to godep for the SQS metric Jan 2, 2017
api Allow selecting the simple queue metric which works better for low vo… Jan 5, 2017
config Use a separate KubeLabelConfig type for getting labels when using Kub… Jan 17, 2017
demand Add some more tests May 17, 2016
engine Comments to say what these packages do Jun 1, 2016
metric Use a literal for SQS metric test cases as its more idiomatic Jan 3, 2017
monitor Plugins for “monitors” so that we can send regular updates to places … Jun 1, 2016
scheduler Get image from k8s deployment object so labels can be retrieved from … Jan 16, 2017
target Only use I factor (in PID) once we’ve hit the target, to prevent mass… May 27, 2016
utils Get image from k8s deployment object so labels can be retrieved from … Jan 16, 2017
vendor Add aws-sdk-go dependency to godep for the SQS metric Jan 2, 2017
.gitignore 0.5.3 Apr 7, 2016
.travis.yml Remove Go 1.5 Jan 1, 2017
CHANGELOG.md Bump version Jan 18, 2017
CONTRIBUTING.md Use godep to manage dependencies so we can run v1.5 of k8s.io/client-go Jan 2, 2017
Dockerfile Fix slashes in the Dockerfile label command. Sep 9, 2016
LICENSE 0.6.0 Apr 18, 2016
Makefile Use godep to manage dependencies so we can run v1.5 of k8s.io/client-go Jan 2, 2017
README.md Better descriptions for the queue algorithms Jan 6, 2017
VERSION Bump version Jan 18, 2017
main.go Plugins for “monitors” so that we can send regular updates to places … Jun 1, 2016
run.sh 0.5.3 Apr 7, 2016
settings.go Get image from k8s deployment object so labels can be retrieved from … Jan 16, 2017
settings_test.go Add Kubernetes scheduler that scales pods by calling the deployments API Jan 2, 2017

README.md

Microscaling Engine

Our Microscaling Engine provides automation, resilience and efficiency for microservice architectures. You can use our Microscaling-in-a-Box site to experiment with microscaling. Or visit microscaling.com to find out more about our product and Microscaling Systems.

Docker Image

Build

Build Status

Go 1.6 & 1.7

Microscaling Engine is under development, so we're not making any promises about forward compatibility, and we wouldn't advise running it on production machines yet. But if you're keen to get it into production we'd love to hear from you.

Schedulers

Microscaling Engine will integrate with all the popular container schedulers. Currently we support

  • Docker API
  • Marathon
  • Kubernetes

Support for more schedulers is coming soon. Let us know if there is a particular scheduler you wish us to support.

Metrics

Currently we support scaling a queue to maintain a target length. Support for more metrics is coming soon.

2 queue scaling algorithms are available.

  • SimpleQueue - scales containers up or down by one according to whether the queue is too long or too short.
  • Queue - uses control theory to prevent oscillation.

Queue Types

  • SQS - blog post with more details coming soon.
  • NSQ - see this blog post for more details.
  • Azure storage queues - this blog post describes using the Azure queue as the metric while running microscaled tasks on DC/OS.

Support for more message queues is coming soon. Let us know if there is a particular queue you wish us to integrate with.

Running

The easiest way to run Microscaling-in-a-box is to follow the instructions. The docker run command pulls the latest image of this code from Docker hub.

Running with label-based config

Get scaling parameters from your image metadata by configuring them with the following labels:

  • com.microscaling.is-scalable
  • com.microscaling.priority
  • com.microscaling.max-delta
  • com.microscaling.min-containers
  • com.microscaling.max-containers

Download the compose file and add the following environment variable to the environment settings for the microscaling image:

MSS_CONFIG=LABEL

Building from source

If you want to build and run your own version locally:

  • Clone this repo
  • Build your own version of the Docker image DOCKER_IMAGE=<your-image> make build
  • Specify -it <your-image> instead of -it microscaling/microscaling:latest on docker run so that it picks up your version of the image

Licensing

Microscaling Engine is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Contributing

We'd love to get contributions from you! Please see CONTRIBUTING.md for more details.

Contact Us

We'd love to hear from you at hello@microscaling.com or on Twitter at @microscaling. And we welcome new issues or pull requests!