Containers in a virtual machine allow for the easy adoption of container technologies, while slowly introducing the customer into the new technology with minimal business impact. Illustrated below is an example of an application that leverages PODS, Containers and a Virtual Machine to deliver their solution, very innovative use of container-based technology.
Kubernetes and Docker for XaaS
Kubernetes can provide an XaaS feature, but it can be challenging without using a few tools. The image has an example on how Kubernetes can manage to deploy your application with the distribution of its cluster.
Important Note: The image below shows projects/applications divided equally among the nodes, though this is possible, Kubernetes will not always reserve one node per project, it will spread applications among all nodes according to the resources available and the application requirements.
The example shows three projects (Web Project A, Web Project B and AI Project A) each one of them uses different technologies on their applications, for instance, Web Project A has a Java application and Web Project B a Ruby on Rails application. We are using Helm to manage the projects (helm is a tool built for Kubernetes that help deploy and manage all the necessary configuration requirements for our applications). With Helm we can achieve granularity and can divide our deployments into different environments for the same application.
A best practice is to use the 12 factor rule to achieve a desired level of granularity. Kubernetes can reserve resources according to the application needs, for instance, on our Web Project A we've requested 4GB of RAM and 2 CPU cores for our Java application, hence Kubernetes will only deploy this application on a node that has sufficient memory and CPUs available to accommodate the applications requirement. Kubernetes has a lot of features including where you can specifically set the node where it will deploy your application (note: the application will fail if the resources are insufficient).
We can also reserve the storage resource. In our example we have a Glusterfs cluster configured with 1TB; Web Project A and the Postgres database requests 100GB of storage, enabling us to provide fluid or reserved storage for the databases. Kubernetes supports a variety of storage devices.
Leveraging container technology should be carefully planned within the environment, and often results in considerable cost savings and performance enhancements. For more information, please contact firstname.lastname@example.org. Looking for some videos on the topic? https://www.youtube.com/user/JeffreyLush/search?query=Kubernetes