Why would you need container orchestration?
Now running software application in a container is giving so many benefits that we have seen already. It is very beneficial for operations team as well. They also don’t have to maintain different operating systems and different packages. But what about very large scale container deployment.
Container management, deployment and software upgrade is become difficult for large scale container deployment. Here Ops team need some orchestration system which can deploy container automatically, maintain and monitor container health and scale out and scale in as per resource utilization
What is Kubernetes?
Kubernetes is an open source container management and orchestration platform, initially developed by Google and donated to CNCF (Cloud Native Computing Foundation) an open source community.
Kubernetes provides automatic deployment, scaling, load balancing, logging, monitoring and container management feature.
Kubernetes provides user preference and flexibility in configuration.
Kubernetes allows declarative configuration with desire state that we wanted to achieve instead of using set of commands to achieve that desire state.
Kubernetes allows imperative configuration as well where we can issue commands for changing system state.
Key features of Kubernetes as a container orchestration platform
- Kubernetes supports for both Stateful workloads like database and stateless workloads like NGINX or Apache.
- Kubernetes supports auto scaling.
- Kubernetes provide feature of resource limits for workloads. Just specify the label of resources and Kubernetes will follow that instruction.
- Kubernetes supports extensibility. We can extend Kubernetes through external ecosystems of plugins.
- Kubernetes supports portability. It can be used in any platform like on premises or in any cloud platform.
Limitation of Kubernetes
- Kubernetes may not be suitable for small deployment and for simple application.
- Kubernetes is having complex configuration.
- Kubernetes experience expert limitation.
- Kubernetes may be expensive for some application instead managed services may be beneficial. Managed services like Google cloud function or AWS lambda etc. In this managed services developer only need to focus on writing code and no need to worry about underlying infrastructure.
- Kubernetes may not be suitable for running database for its replication issues.