Institutional Repository
Technical University of Crete
EN  |  EL



My Space

Fail safe container scheduling in Kubernetes

Christodoulopoulos Christos

Full record

Year 2017
Type of Item Diploma Work
Bibliographic Citation Christos Christodoulopoulos, "Fail safe container scheduling in Kubernetes", Diploma Work, School of Electrical and Computer Engineering, Technical University of Crete, Chania, Greece, 2017
Appears in Collections


Kubernetes is a tool for facilitating deployment of multiple OS system-level virtualized applications using containers. It is capable for the management of several containerized applications and users at the same time allowing compute resources to be managed and distributed to the applications using a scheduling mechanism. The scheduling mechanism is also responsible for re-scheduling of compute resources per application based on the actual needs of each application at run-time. However, resource allocation in a typical Kubernetes environment is rather static (i.e. the maximum amount of compute resources that each application can use has to be known in advance) meaning that if the application requests more resources than the maximum, a failure scheduling event will be generated. Although solutions to the problem of automatic scaling of resources in Kubernetes are known to exist and auto scaling is supported by cloud providers such as Amazon and Google, these solutions are fully proprietary and not always generic (i.e. do not apply to all Kubernetes distributions). This is exactly the problem this work is dealing with. We propose Commodore, a mechanism that is platform independent (i.e. can work with any Kubernetes distribution including non-cloud based implementations). Commodore is capable of allocating (or de-allocating) resources to applications based on their actual demands. To show proof of concept, Commodore is implemented on a Fiware cloud platform running on Openstack. In this environment, application services are deployed on worker machines (nodes) which are realized as Virtual Machines (VMs). This way, the implementation takes advantage of the virtualization features of cloud computing (i.e. allows for definition of virtualized resources including network, cpu and memory leading to better utilization of physical resources while ensuring software security by isolating services and applications from each other). We run several experiments based on a simulated (but realistic) use case scenario. The experimental results demonstrated that Commodore responds to the increasing (or decreasing) resource demands of the application leading to significantly faster response times compared to a non-auto scaled implementation where all service requests are handled by the maximum statically pre-allocated resources.

Available Files