Official definition of Kubernetes
Open source container orchestration tool developed by Google and helps you manage containerized applications in different deployment environments like physical machines, virtual machines or cloud environment or even hybrid deployment environments.
The need for a container orchestration tool
- Trend from Monolith to Microservices
- Increased usage of containers
- Demand for a proper way of managing those hundreds of containers
- High Availability or no downtime
- Scalability or high performance
- Disaster recovery - backup and restore
- API Server which also a container and an entrypoint to K8 cluster.
- Controller Manager keeps track of whats happening in the cluster, may be if container died and needs a restart etc.
- Scheduler ensures Pods placement.
- etcd (key value storage) which basically holds at anytime current state of K8 cluster. It has all the configuration data inside and all the status data of each node and each container inside of that node and backup restore actually made of this etcd snapshot.