This post is a continuation of
Let us assume we have a VM where you can run containers. However, after running X number of VMs, it may not be able to run any additional containers. To address this, you must spin up another VM (VM2) and run containers on it.
This setup comes with its challenges, such as:
- Containers on VM2 may need to talk to containers on VM1.
- If VM1 needs to a restart then all the containers running on it, needs to be moved on another VM temporarily.
- As the number of VMs grows, the management of containers will become problematic.
These challenges are addressed by an Orchestration tool. Just like how in an orchestra, a conductor leads musicians to produce beautiful music, an Orchestration tool would decide
- on which machine a container would run
- facilitate networking between containers
If you want to run 5 containers of web app, orchestration tool would distribute 5 containers on the available machines. Orchestration tools are smart & feature rich.
If one of the machines (let us say VM1) becomes unavailable, all the containers would be distributed between available machines. Requests would be forwarded to available containers only. Here also, you can set up health checks to classify healthy vs. non-healthy containers. Non-healthy containers can be restarted automatically !! Isn’t that neat?
Examples of Orchestration tools
- Docker Swarm
- Kubernetes (Open Source tool designed by Google) = there are eight letters between k and s, which is why Kubernetes is also called k8s.
- AWS Elastic Container Services
- Redhat OpenShift
You don’t need to install Orchestration tools anymore. With few clicks, cloud providers offer orchestration tools, so you don’t have to worry about installation and upgradation.
Amazon Web Services offer the following managed solutions
- Elastic Kubernetes Service = Kubernetes managed by Amazon
- Openshift on AWS
- Elastic Container Service
In this post, we briefly looked at
- Orchestration tool
References
Image