How to transfer elastic container platforms like Docker Swarm, Kubernetes across different cloud service providers like AWS, GCE, Azure, OpenStack at runtime?
I presented a proof-of-concept solution (accepted as an full paper) to do this on the 7th International Conference on Cloud Computing and Services Science (CLOSER 2017) in Porto, Portugal.
Currently the proof-of-concept system supports the following infrastructures and elastic platforms.
- Infrastructures: AWS (using Ruby aws-sdk), GCE (using CLI interface), Azure (using fog.io), OpenStack (using fog.io)
- Platforms: Kubernetes (1.6 and above), Docker Swarm (1.12 and above)
However, due to its extendable design arbitrary cloud infrastructures (IaaS) and elastic container platforms can be supported by providing addtional drivers.
The conference presentation slides are embedded in this post. However, they can be accessed directly via SlideShare as well.
Elastic container platforms (like Kubernetes, Docker Swarm, Apache Mesos) fit very well with existing cloud-native application architecture approaches. So it is more than astonishing, that these already existing and open source available elastic platforms are not considered more consequently in multi-cloud research. Elastic container platforms provide inherent multi-cloud support that can be easily accessed. We present a solution proposal of a control process which is able to scale (and migrate as a side effect) elastic container platforms across different public and private cloud-service providers. This control loop can be used in an execution phase of self-adaptive auto-scaling MAPE loops (monitoring, analysis, planning, execution). Additionally, we present several lessons learned from our prototype implementation which might be of general interest for researchers and practitioners. For instance, to describe only the intended state of an elastic platform and let a single control process take care to reach this intended state is far less complex than to define plenty of specific and necessary multi-cloud aware workflows to deploy, migrate, terminate, scale up and scale down elastic platforms or applications.
The proof-of-concept implementation can be found in the following bitbucket repository. You will find the last progress in the working branch.