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

Compare with Current View Page History

« Previous Version 2 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 since external autoscaling is discouraged

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

As per Kubernetes documentation, 'external' autoscaling using CPU usage metrics is strongly advised against for a number of technical reasons; instead it is recommended that Kubernetes it's be allowed to make these scaling decision

This feature addes CloudStack to the list of cloud providers 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