🔹 Kubernetes And Its Use Cases 🔹
What is Kubernetes?
Kubernetes is an open-source orchestration tool developed by Google for managing microservices or containerized applications across a distributed cluster of nodes.
What features Does K8s Offer?
- Automated Scheduling
- Self-Healing Capabilities
- Automated rollouts & rollback
- Assures high availability with zero downtime
- Highly performant and scalable
- Reliable infrastructure to support data recovery with ease
- Provides a higher density of resource utilization
- Offers enterprise-ready features
- Application-centric management
Now that we have understood why K8s is imperative, it’s time to decode the underlying architecture of K8s.
One of the fundamental design decisions which have been taken by this impeccable cluster manager is its ability to deploy existing applications that run on VMs without any changes to the application code. On the high level, any application that runs on VMs can be deployed on Kubernetes by simply containerizing its components. This is achieved by its core features; container grouping, container orchestration, overlay networking, container-to-container routing with layer 4 virtual IP based routing system, service discovery, support for running daemons, deploying stateful application components, and most importantly the ability to extend the container orchestrator for supporting complex orchestration requirements.
The workloads could include long-running services, batch jobs and container host specific daemons. All the container hosts are connected together using an overlay network for providing container-to-container routing. Applications deployed on Kubernetes are dynamically discoverable within the cluster network and can be exposed to the external networks using traditional load balancers.
That’s just a glimpse of what Kubernetes provides out of the box. In the next few sections will go through its core features and explain how you can design your software applications to be deployed on it in no time.
Deploying Daemons on Nodes
Kubernetes provides a resource called DaemonSets for running a copy of a pod in each Kubernetes node as a daemon. Some of the use cases of DaemonSets are as follows:
- A cluster storage daemon such as glustered, ceph to be deployed on each node for providing persistence storage.
- A node monitoring daemon such as Prometheus Node Exporter to be run on every node for monitoring the container hosts.
- A log collection daemon such as fluented or logstash to be run on every node for collecting container and Kubernetes component logs.
- An ingress controller pod to be run on a collection of nodes for providing external routing.
Kubernetes has been designed with over a decade of experience on running containerized applications at scale at Google. It has been already adopted by the largest public cloud vendors, technology providers and currently being embraced by most of the software vendors and enterprises as this article being written. It has even lead to the inception of the Cloud Native Computing Foundation (CNCF) in the year 2015, was the first project to graduate under CNCF, and started streamlining the container ecosystem together with other container related projects such as CNI, Containerd, Envoy, Fluentd, gRPC, Jagger, Linkerd, Promethesus, rkt and Vitess. The key reasons for its popularity and to be endorsed at such level might be its flawless design, collaborations with industry leaders, making it open source, always being open to ideas and contributions.