Giter VIP home page Giter VIP logo

Kruize - Right Size and Optimize your Containers ! Build Status

Motivation

Docker and Kubernetes have become more than buzzwords and are now the defacto building block for any cloud. We are now seeing a major transformation in the industry as every product/solution/offering is being containerized as well as being made kubernetes ready (Hello YAML!). This is throwing up a new set of challenges that are unique to this changing environment.

One such issue is right sizing and optimizing containers. When applications are not sized appropriately in a k8s cluster, they either waste resources (oversized) or worse get terminated (undersized), either way could result in loss of revenue. Add to this the new microsevices model means making hundreds of code changes in a day. This means that a "let us size it once and for all" model will no longer work. Now imagine doing it across a number of language runtimes each with its own requirements to understand the real scale of the problem !

DevOps Dilemma

Kruize monitors application containers for resource usage. It has a analysis engine which predicts the right size for the containers that are being monitored and offers recommendations on the right CPU and Memory request and limit values. The recommendations can be viewed in a dashboard on a per application basis. This helps IT admins to review and apply the recommendations knowing that their applications and even the cluster is optimally sized !

Supported Configurations

Kruize currently supports Linux and macOS.

Two primary methods of deployment are available:

  1. Docker (Developer Mode)

Developing a microservice on your laptop and want to quickly size the application container using a test load ? Run the Kruize container locally and point it to your application container. Kruize monitors the app container using Prometheus and provides recommendations as a Grafana dashboard (Prometheus and Grafana containers are automatically donwloaded when you run kruize).

  1. Kubernetes

Kruize can be deployed to a supported Kubernetes cluster. We currently support Minikube, IBM Cloud Private (ICP) and OpenShift. Kruize uses Prometheus as the metrics provider and provides recommendations through a Grafana dashboard. Prometheus and Grafana come pre-packaged with both ICP and OpenShift.

Even though Kruize currently supports Prometheus as the metrics provider, it can easily be extended to scrape metrics from any other metrics provider such as new relic, splunk etc.

Installation

See the Install README for more details on the installation.

REST API

See the API README for more details on the Kruize REST API.

Additional runtimes recommendations

See the Runtimes README for more details on how to generate additional runtimes specific recommendations for your application through Kruize. Currently runtime recommendations are only available for Java with OpenJ9.

Contributing

Refer to CONTRIBUTING.md.

License

Apache License 2.0, see LICENSE.

kruize's Projects

autotune icon autotune

Autonomous Performance Tuning for Kubernetes!

hpo icon hpo

Hyper Parameter Optimization

hpo-poc icon hpo-poc

Example code for using various HPO technologies

kruize icon kruize

Tool to right size and optimize your containers !

kruize-ui icon kruize-ui

Repo for all the GUI parts of Kruize autotune UI

ras-tools icon ras-tools

This repo holds the helper scripts which are used as part of autotune development

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.