All Projects β†’ aporia-ai β†’ kubesurvival

aporia-ai / kubesurvival

Licence: Apache-2.0 License
πŸ’° Significantly reduce Kubernetes costs by finding the cheapest machine types that can run your workloads

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to kubesurvival

trackit
Trackit helps you understand and improve your use of AWS
Stars: ✭ 91 (-42.04%)
Mutual labels:  cost-optimization
handbook.vantage.sh
The Cloud Cost Handbook is a free, open-source, community-supported set of guides meant to help explain often-times complex pricing of public cloud infrastructure and service providers in plain english.
Stars: ✭ 265 (+68.79%)
Mutual labels:  cost-optimization
greenbot
AWS cost optimization tool
Stars: ✭ 28 (-82.17%)
Mutual labels:  cost-optimization
aws-cost-report
Generate Sheets (Google, Excel and CSV) with useful information about your AWS spendings.
Stars: ✭ 79 (-49.68%)
Mutual labels:  cost-optimization
awsdtc
AWS Data Transfer Cost Explorer
Stars: ✭ 90 (-42.68%)
Mutual labels:  cost-optimization
unishox js
JS Library for Guaranteed compression of Unicode short strings
Stars: ✭ 27 (-82.8%)
Mutual labels:  cost-optimization
awesome-aws-research
A curated list of awesome Amazon Web Services (AWS) libraries, open source repos, guides, blogs, and other resources for Academic Researchers new to AWS
Stars: ✭ 41 (-73.89%)
Mutual labels:  cost-optimization
Unishox2
Compression for Unicode short strings
Stars: ✭ 124 (-21.02%)
Mutual labels:  cost-optimization
trackit2-home
TrackIt helps you to optimize your AWS cloud
Stars: ✭ 46 (-70.7%)
Mutual labels:  cost-optimization
Ec2instances.info
Amazon EC2 instance comparison site
Stars: ✭ 3,619 (+2205.1%)
Mutual labels:  cost-optimization
Infracost
Cloud cost estimates for Terraform in pull requestsπŸ’°πŸ“‰ Love your cloud bill!
Stars: ✭ 4,505 (+2769.43%)
Mutual labels:  cost-optimization
genetic-algorithm-matlab
A very simple Genetic Algorithm implementation for matlab, easy to use, easy to modify runs fast.
Stars: ✭ 18 (-88.54%)
Mutual labels:  cost-optimization

πŸ’° KubeSurvival

GitHub release (latest SemVer) GitHub Workflow Status Maintainability Test Coverage

KubeSurvival allows you to significantly reduce your Kubernetes compute costs by finding the cheapest machine types that can run your workloads successfully.

If you have a multi-tenant environment, ML training jobs, a large number of ML model servers, etc, this tool can help you optimize your K8s compute costs.

To easily define workloads, KubeSurvival uses a very simple DSL:

  (
    # Some microservice
    pod(cpu: 1, memory: "1Gi") + 

    # Another microservice - with 3 replicas
    pod(cpu: "500m", memory: "2Gi") * 3 +

    # More microservices!
    (
      pod(cpu: 1, memory: "1Gi") +
      pod(cpu: "250m", memory: "1Gi")
    ) * 3
  ) * 2  # Production, Staging

This will give you a result such as:

Instance type: t3.medium
Node count: 11
Total Price per Month: USD $340.45

Made with ❀️ by Aporia

Installation

Download a precompiled binary for your operating system from the Releases page.

Alternatively, if you have Go installed, you can run:

$ go install github.com/aporia-ai/kubesurvival/v2

Usage

To run KubeSurvival:

./kubesurvival config.yaml

See the examples directory for example config files.

How does it work?

KubeSurvival uses k8s-cluster-simulator to simulate Kubernetes pod scheduling, without running on the actual underlying machines. It iterates over all possible instance types and node counts, simulates a K8s cluster with your workload, and checks if there are any pending pods.

For each simulation it calculates the on-demand cost per month using the ec2-instances-info library. Additionally, it queries the eni-max-pods.txt file to determine what's the maximum number of pods in each instance type.

When simulating a cluster, KubeSurvival always makes sure you have 10% free CPU and Memory on each node.

Finally, KubeSurvival selects the cheapest configuration without pending pods.

What's missing from this?

Well... a lot actually. Here's a partial list:

  • Support for AKS and GKE
  • Support for calculating costs of EBS storages
  • Support for different node groups (e.g 2 machines with GPU + 4 machines without GPU)
  • and probably much more!

We would love your help! ❀️

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].