Skip to content

Commit

Permalink
Refine features for Rook
Browse files Browse the repository at this point in the history
PR created by mamafun@gmail.com
Signed-off-by: lisa.huang@prophetstor.com
  • Loading branch information
matt authored and mamafun committed Oct 5, 2018
1 parent 4fa3827 commit 3cb980d
Showing 1 changed file with 12 additions and 15 deletions.
27 changes: 12 additions & 15 deletions design/Alameda/design.md
@@ -1,33 +1,30 @@
## What is Alameda

Alameda is an intelligent resource orchestrator for Kubernetes, providing the features of autonomous balancing, scaling, and scheduling by using machine learning. Alameda learns the continuing changes of computing and I/O metrics from clusters, predicts the future demands for pods, and intelligently orchestrates underlying resources to fulfill the dynamic resource requests without manual configuration.
Alameda is an intelligent resource orchestrator for Kubernetes, providing the features of autonomous balancing, scaling, and scheduling by using machine learning. Alameda learns the continuing changes of computing resources from K8S clusters, predicts the future computing resoruce demands for pods and nodes, and intelligently orchestrates the underlying computing resources without manual configuration.

For more details, please refer to https://github.com/containers-ai/Alameda

## Features

Alameda provides Rook with the following features:
The main purpose of Alameda is to orchestrate computing resources for Kubernetes by utilizing AI-powered prediction capability. With this, IT admins can leave one of the hardest problems of running Kubernetes to Alameda.

The main purpose of Alameda is to provide prediction and planning to Rook. Rook can make decsions and take actions based on prediction and planning.

- Disk health prediction
Our first take is to provide the following features, which we consider they are beneficial for Rook.
- Disk health and life expectancy prediction
Based on a disk's S.M.A.R.T. value, Alameda predicts how bad a commodity disk is going to fail in a near future. Rook can stop provisioning volumes from a critical status disk.
- Performance prediction
Alameda learns patterns from the historical performance metrics of persistent volumes and pools. This approach has the following benefits:
- prediction-based pod (CPU and memory) requests and limits configuration
- prediction-based pod replication
- provision volumes from predicted low loading pool
- recommend predicted low loading time window for disk replacement
- Capacity trending prediction
Alameda can also provide capacity usage trending prediction for Rook's storage providers as well as storages exposed by Rook. Rook knows better **when** to add more disks or more nodes for more capacity.

- Automatic resource configuration for pods
Alameda includes a community edition AI Engine which generates loading data in the future time. The AI Engine learns patterns from the historical performance metrics of each node and pods running on it. For example, it predicts CPU metrics of the next 24 hours in 1-hour interval. With this prediction info of nodes and pods, Alameda can automatically configure pod resource settings without human intervention. Alameda will provide the following features:

- Continuously automate compute resources (i.e., CPU and memory) requests and limits configurations for pods. It takes both a node and pods running on this node into consideration. For Rook, it means users don't need to configure for pods of mgr, mon, and osd.
- Recommend predicted low loading time window for a predicted bad disk replacement

## How Alameda works

1. Alameda data collector gets metrics from Prometheus (e.g. CPU, memory, Ceph metrics)
1. Alameda data collector gets metrics from Prometheus (e.g., CPU, memory, Ceph metrics)
No Alameda Agent is needed.
2. Alameda AI engine generates resource prediction
3. Alameda resource operator monitors Rook cluster CRD
Alameda will monitor rook CRDs with Alameda annotations. For example, Rook user can add ```container.ai/autoscale``` and ```container.ai/diskFailurePrediction``` annotations in their *cluster.yaml* as:
Alameda monitors rook CRDs with Alameda annotations. For example, Rook user can add ```container.ai/autoscale``` and ```container.ai/diskFailurePrediction``` annotations in their *cluster.yaml* as:
<pre>
apiVersion: v1
kind: Namespace
Expand Down

0 comments on commit 3cb980d

Please sign in to comment.