When and why you should use Kubernetes
Even though Kubernetes is fast becoming a buzz word in the tech space, you might want to slow down on its implementation for several reasons. Before I go on, let me quickly point out the importance of Kubernetes and what it actually is.
For starters Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Huh?! Okay, let me try that again; Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. Did you catch it the second time? Nope! Okay let me break it down in layman's term once and for all. No, rather, let me break it down to a two year old instead.
Say you have 10 remote controlled cars, each car has its own electric circuit, motors, blah blah blah. That one car is one container containing so many parts, okay. So those 10 toy cars are 10 containers each powered differently by their own libraries, environment, software plus more. Now I have a master remote controller to control all those cars seamlessly, now that 'master control' is Kubernetes. Get it now? Kubernetes tells each car when to move, stop, dance, when to conserve energy, which car should be viewed the most by the crowd etc. So each remote controlled car is a container e.g. a docker container, in Kubernetes all those 10 cars could fit inside a 'pod', but its advisable to fit one container inside one pod.
Now understanding what Kubernetes is when do we NOT want to use it.
IT's not advisable to use Kuberenetes for a monolithic application; In software engineering, a monolithic application describes a single-tiered software application in which the user interface and data access code are combined into a single program from a single platform. A monolithic application is self-contained and independent from other computing applications. So back to our cars example, controlling one car or container with a master control or Kubernetes wouldn't be so good an idea. Would it? Of course not!
- If you have NO time to learn please stick to what you know best as the learning curve for Kubernetes is steep.
Kubernetes is unlikely to become obsolete; The Kubernetes ecosystem is developing as new products are being added to it. You will also find out that most cloud vendors support K8s. It is for sure that this service will be there for many years. So when do we NEED to use it?
- When an organization wants to move to the cloud-native approach to develop and deploy applications; Kubernetes helps you to build cloud-native microservices-based apps. It also supports containerization of existing apps, thereby becoming the foundation of application modernization and letting you develop apps faster.
When the organization needs to scale; Cluster autoscaler is used in Kubernetes to scale cluster i.e. nodes dynamically. It watches the pods continuously and if it finds that a pod cannot be scheduled – then based on the PodCondition, it chooses to scale up. Scaling means the practice of adapting your infrastructure to new load conditions. If you have more load, you scale up to enable the environment to respond swiftly/on-time and avoid node-crash. When things cool down and there isn't much load, you scale down to optimize your costs. Kubernetes can do all these automatically.
Kubernetes is a powerful tool, but not a great fit for every team or application.