github.com/gocrane/crane@v0.11.0/docs/index.md (about)

     1  # Introduction
     2  
     3  The goal of Crane is to provide a one-stop-shop project to help Kubernetes users to save cloud resource usage with a rich set of functionalities:
     4  
     5  - **Time Series Prediction** based on monitoring data
     6  - **Usage and Cost visibility**
     7  - **Usage & Cost Optimization** including:
     8      - R2 (Resource Re-allocation)
     9      - R3 (Request & Replicas Recommendation)
    10      - Effective Pod Autoscaling (Effective Horizontal & Vertical Pod Autoscaling)
    11      - Cost Optimization
    12  - **Enhanced QoS** based on Pod PriorityClass
    13  - **Load-aware Scheduling** 
    14  
    15  
    16  ![Crane Overview](images/crane-overview.png)
    17  
    18  ## Features
    19  ### Time Series Prediction
    20  
    21  TimeSeriesPrediction defines metric spec to predict kubernetes resources like Pod or Node.
    22  The prediction module is the core component that other crane components relied on, like [EHPA](#effective-horizontalpodautoscaler) and [Analytics](#analytics).
    23  
    24  Please see [this document](tutorials/using-time-series-prediction.md) to learn more.
    25  
    26  ### Effective HorizontalPodAutoscaler
    27  
    28  EffectiveHorizontalPodAutoscaler helps you manage application scaling in an easy way. It is compatible with native [HorizontalPodAutoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) but extends more features like prediction-driven autoscaling.
    29  
    30  Please see [this document](tutorials/using-effective-hpa-to-scaling-with-effectiveness.md) to learn more.
    31  
    32  ### Analytics
    33  
    34  Analytics model analyzes the workload and provide recommendations about resource optimize.
    35  
    36  Two Recommendations are currently supported:
    37  
    38  - [**ResourceRecommend**](tutorials/resource-recommendation.md): Replicas recommendation analyze the actual application usage and give advice for replicas and HPA configurations.
    39  - [**HPARecommend**](tutorials/replicas-recommendation.md): Resource recommendation allows you to obtain recommended values for resources in a cluster and use them to improve the resource utilization of the cluster.
    40  
    41  Please see [this document](tutorials/analytics-and-recommendation.md) to learn more.
    42  
    43  ### QoS Ensurance
    44  Kubernetes is capable of starting multiple pods on same node, and as a result, some of the user applications may be impacted when there are resources(e.g. cpu) consumption competition. To mitigate this, Crane allows users defining PrioirtyClass for the pods and QoSEnsurancePolicy, and then detects disruption and ensure the high priority pods not being impacted by resource competition.
    45  
    46  Avoidance Actions:
    47  
    48  - **Disable Schedule**: disable scheduling by setting node taint and condition
    49  - **Throttle**: throttle the low priority pods by squeezing cgroup settings
    50  - **Evict**: evict low priority pods
    51  
    52  Please see [this document](tutorials/using-qos-ensurance.md) to learn more.
    53  
    54  ## Load-aware Scheduling
    55  Native scheduler of kubernetes can only schedule pods by resource request, which can easily cause a series of load uneven problems. In contrast, Crane-scheduler can get the actual load of kubernetes nodes from Prometheus, and achieve more efficient scheduling.
    56  
    57  Please see [this document](tutorials/scheduling-pods-based-on-actual-node-load.md) to learn more.
    58  
    59  ## Repositories
    60  
    61  Crane is composed of the following components:
    62  
    63  - [craned](https://github.com/gocrane/crane/tree/main/cmd/craned) - main crane control plane.
    64      - **Predictor** - Predicts resources metrics trends based on historical data.
    65      - **AnalyticsController** - Analyzes resources and generate related recommendations.
    66      - **RecommendationController** - Recommend Pod resource requests and autoscaler.
    67      - **ClusterNodePredictionController** - Create Predictor for nodes.
    68      - **EffectiveHPAController** - Effective HPA for horizontal scaling.
    69      - **EffectiveVPAController** - Effective VPA for vertical scaling.
    70  - [metric-adaptor](https://github.com/gocrane/crane/tree/main/cmd/metric-adapter) - Metric server for driving the scaling.
    71  - [crane-agent](https://github.com/gocrane/crane/tree/main/cmd/crane-agent) - Ensure critical workloads SLO based on abnormally detection.
    72  - [gocrane/api](https://github.com/gocrane/api) - This repository defines component-level APIs for the Crane platform.
    73  - [gocrane/fadvisor](https://github.com/gocrane/fadvisor) - Financial advisor which collect resource prices from cloud API.
    74  - [gocrane/crane-scheduler](https://github.com/gocrane/crane-scheduler) - A Kubernetes scheduler which can schedule pod based on actual node load.