Kubernetes is a growing trend. In the last few years, Kubernetes (k8s) has experienced a rapid rise from a small open source project by Google, to the flagship project of the Cloud Native Computing Foundation (CNCF).
What is Kubernetes?
Kubernetes is a clustered orchestration system. It was designed from scratch to be an environment for building distributed applications from containers.
Kubernetes’ goal is to simplify the orchestration and scheduling of your application. It basically allows you to stop worrying about which specific machines in the data centre run application components.
It also provides you with tools to test and replicate your application on these machines, and also with services to connect your application to microservices so that each layer of your application is separate from other layers so that you can scale, update and maintain them independently of each other.
Why do we usek8s?
We can deploy clustered applications without worrying about specific servers.
Container orchestrators are necessary when you have a microservice application consisting of several services, which are also container-based.
The container orchestrator performs many tasks. The first task is to firstly place the application containers on the number of servers that is needed to run the application, taking into account the load on those servers to prevent a container from reaching the server overloaded, and also taking into account the memory and processor requirements for a given container.
We can easily scale the application horizontally up and down.
There is a scenario when an application needs to be scaled horizontally. This is achieved by adding more containers of the same type.
The container orchestrator performs the task of scaling up or down the number of containers for each application taking into account the resources consumed on each target server, as well as the resource requirements for each application.
In this case, the orchestrator can rely on the so-called affinity and anti-affinity principles. The latter allows us to ensure that, for example, all containers of the same type will be launched on different physical servers.
Restore the application if the server on which it was running fails.
If the server fails, the application must be restored correctly. K8s can monitor each application container or pod to see if this container or pod is alive or not – and, if one is not, Kubernetes will restart it.
In the case of Kubernetes, you can say: “I want to have 5 containers of the quasar module”, and k8s will make sure that you always have 5 containers.
If there are less than 5 containers at any point, Kubernetes will immediately launch a new container to maintain the amount. This is important for processing the application and for predicting load.
K8s also monitors the state of the servers on which the application is running and, if the server is down, it will reschedule all of its containers on other servers.
Onesait Platform and k8s
A main goal for the platform is to have a “Zero Lock-in” strategy with any vendors, so that the platform can be deployed in any Cloud and also on premise.
To fulfil this strategy, the platform suggest a deployment based on Docker containers and orchestrated by Kubernetes, so that these can be deployed in a vendor-independent way, and to integrate a CaaS platform that allows for a visual and easy management of these containers in a vendor-independent way.
Additionally the platform can use specific SaaS services from some providers and be deployed on top of an existing Kubernetes cluster (AKS pj), always managed from the platform’s CaaS to achieve vendor independence.
Advantages provided by Rancher2
Rancher is a container management platform that makes it easy to run Kubernetes everywhere. It meets the IT requirements and empowers DevOps teams.
Commonly, operating Kubernetes can be cumbersome and unintuitive. Rancher provides you with a graphical interface where you can easily monitor and operate the different platform components.
It also allows you to deploy on the cluster a combo of Prometheus + Grafana with which you can visualise and store the metrics of both the platform’s components and of the cluster in general.