Getting to know Kubernetes
Hello to all Engineers & DevOps enthusiasts out there!
I am starting this new series on one of the most famous Container Orchestration Platform: KUBERNETES
The Questions arise:
What is Kubernetes???
Kubernetes is a Container Orchestration platform which helps the user to manage, run and deploy the containers at scale.
It is an Open source platform for managing containerized workloads & services that deploys both declarative configuration & automation.
Why Kubernetes???
Kubernetes provides a breakthrough in the field of DevOps as it allows the teams to keep up pace with the increasing requirements of the modern software development. Without Kubernetes, teams are forced to script their own software deployment, scaling, and update workflows. Many organizations employ big teams to handle those tasks alone. Kubernetes allows such teams to derive maximum utility from containers and build cloud-native applications that can run anywhere, independent of cloud-specific requirements. Clearly this is the efficient model for application development and operations which we’ve been waiting for.
Besides this, there are some other factors pushing towards DevOps migration towards Kubernetes:
* Deploying Application(containers) at scale
DevOps comes up as a method to speed up the process of Software Delivery.
With Kubernetes Controller it is easy to use Infrastructure to manage the Application Lifecycle.
K8s Controller provides:
1) Scalability: Software can be deployed for the first time in a scale-out manner across Pods, and deployments can be scaled in or out at any time.
2) Horizontal auto scaling: K8s auto scalers automatically resize a deployment’s number of Pods based on the usage of specified resources (within defined limits).
3) Visibility: In -process, Completed & Failed deployments can be easily identified.
4) Run at will: Pause a deployment anytime and resume later.
5) Version control: Roll back a deployment to an earlier version of application Image if the current version is not stable. Update the current deployed pods Image versions to newer ones.
* Eliminates Infrastructure Lock-in
Previously, the applications and their supporting tools were closely tied to the underlying infrastructure, which makes applications more dependent on a particular environment causing Performance issues.
PaaS introduced some capabilities to eradicate the above issues but that resulted in the imposition of strict requirements like Programming languages & App frameworks which was not feasible for many teams.
Kubernetes eliminates this Infrastructure Lock-in by providing certain core capabilities for containers without imposing restrictions. It achieves this using Pods & Services.
* Modularity using ‘Service’
Containers allow applications to be decomposed into smaller parts. This enabled faster development by teams which are responsible for specific containers. But this requires a system for integrating & orchestrating these modular parts. K8s achieves this using Pods which is a collection of containers that are controlled as a single application. The containers in a Pod share resources such as: File system, kernel namespace, IP addresses etc.
The concept of Service in K8s is used to group together a collection of Pods that perform a single function.
How to use Kubernetes & its different scenarios:
I have tried to cover different topics which touches different realms of Kubernetes hemisphere in the below links.
Hopefully the above links will help the users in gaining useful insights in their quest to understand Kubernetes.
Happy DevOpsing…