You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Introduction

Adding support for CloudStack as a cloud provider in the Kubernetes cluster-autoscaler. This will allow Kubernetes itself to scale up / down the cluster based on capacity requirements

It will provide the following features,

  • An interface for kubernetes cluster-autoscaler to communicate with CloudStack
  • Scale up the cluster, if pods can not be scheduled - up to the maximum configured cluster size

  • Scale down the cluster, if nodes can be removed - down to the minimum configured cluster size

References

https://github.com/shapeblue/autoscaler/tree/master/cluster-autoscaler

https://github.com/apache/cloudstack/pull/4329

https://github.com/apache/cloudstack-primate/pull/733


Use Cases

Dynamically scale the cluster size based on capacity requirements without user intervention


Feature Specification

Addition of CloudStack cloud provider in the Kubernetes cluster-autoscaler. It provides an interface by which Kubernetes can communicate with CloudStack to change the size of the cluster

This will run as a `cluster-autoscaler` service on the kubernetes cluster consisting of one pod which determines the capacity needs of the cluster

Implementation

Kubernetes Cluster Autoscaler

  • cloudstack_cloudprovider : Consists of the configuration and methods required to communicate with CloudStack
  • cloudstack_node_group : Consists of the configurations and methods to control the CKS Cluster
  • cloudstack_manager : The control plane that connects Kubernetes with CloudStack and manages the CKS Cluster
  • cloudstack/service : A library to communicate with CloudStack

API

  • scaleKubernetesCluster

    New Parameters
    ==============

    autoscaling = (bool) Indicates whether autoscaling is enabled on the cluster
    maxsize = (integer) The maximum size to which the cluster can grow
    minsize = (integer) The minimum size of the cluster
    nodeids = ([]uuid) List of nodes to be removed from the cluster



  • No labels