Overview of kubernetes
Kubernetes is container Orchestration technologies developed by Google. It is an open source project and one of the best and most popular container orchestration technologies.
We already know what is container and why do we need them.
Container Orchestration
Till now We have learned that how our application get packaged into a docker container. However there are some question that should have come to our mind.
- How do we run it in actual environment i.e production environment ?
- how to build or configure our application if it depends on other containers like database or messaging services or other backend services?
- What will happen if the number of users increases or decreases and we need to scale up /down our application. How do we perform such task?
To overcome these scenario we need an underlying platform with a set of resources. The platform needs to orchestrate the connectivity between the containers and automatically scale up or down based on the load. This whole process of automatically deploying and managing containers is known as Container Orchestration.
Orchestration Technologies
- Docker Swarm
- kubernetes
- MESOS
Advantages of using kubernetes
- High Availability : Application is highly available as hardware failures do not bring the application down because we have multiple instances of our application running on different nodes.
- Load Balancer : The user traffic is load balanced across the various containers. When demand increases, deploy more instances of the application seamlessly at very short period of time. And When we run out of hardware resources, scale the number of nodes up/down without having to take down the application.
- Easily Configurable : The whole configuration can be done with a set of declarative object configuration
Kubernetes Termonology :
Worker Node / Minions
- Node is a machine which can be a physical or virtual machine where kubernetes is installed. A node is a worker machine and this is where containers will be launched by kubernetes.
- It is also known as Minions.
Cluster
- A cluster is a set of nodes grouped together. If one node fails then we have our application still accessible from the other nodes. Having multiple nodes helps in sharing load as well.
Master Node
- The master Node is another node with Kubernetes installed in it, and is configured as a Master. The master Node watches over the nodes in the cluster and is responsible for the actual orchestration of containers on the worker nodes.
- It is responsible for :
- Managing the Cluster.
- It stores the information of members of cluster.
- To manage the workload.