The need for an orchestration system
OK-- why do we even need an orchestration system
?
Modern software applications are based on many different services working together as a larger system. If containerized, these services would be wrapped by many different containers that need maintenance, resources, deployments, monitoring, and so on.
In order to efficiently manage a system like this, manpower is not enough. This effort requires a lot of manual work and monitoring, and could potentially result in human errors and misconfigurations.
Hence arrives the need of having a system that could compose all of these containers, one that would take care of their resources (such as disk space, memory, network), and would automatically manage them. This kind of system would easily take care of continuous deployment and integration, as well as managing the applications' configurations.
Hello, Kubernetes!
Kubernetes is an open-source orchestration system for automating deployment, scaling, and overall management of containerized applications. It gives developers the freedom to take advantage of on-premises, hybrid, or public cloud infrastructure-- allowing effortless movement of workloads wherever necessary.
Some of the main functionalities of Kubernetes include:
- Automated rollouts and rollbacks
- Storage orchestration
- Automatic bin packing
- Service discovery and load balancing
- Secret and configuration management
- Batch execution
- Horizontal scaling
- Self-healing
Kubernetes operates at the container level rather than at the hardware level. It provides some generally applicable features common to PaaS
(Platform as a Service), such as deployment, scaling, and load balancing. It also lets users integrate their logging, monitoring, and alerting solutions into the same dashboard.
However, the main difference between PaaSs and Kubernetes is that K8 (short for Kubernetes) is not monolithic, and these default solutions are optional and pluggable.