Mozilla BBSR/ Open Source Community

A Guide to Kubernetes- What, How, Why?

Brief Overview of Kubernetes, Container Orchestration Tool

Saniya Bhargav
Mozilla Club Bbsr

--

Source: https://softwareengineeringdaily.com/2019/01/11/why-is-storage-on-kubernetes-is-so-hard/

Ever wondered what people mean when they talk about “Kubernetes”, “containers”, “Docker” and so on? Do these terms seem too heavy and un-understandable to you?

Well, if that’s the case, here I am to your rescue!!

In this blog, we’ll cover the basics about Kubernetes, why it’s gaining sudden popularity and how this seemingly complex framework actually functions.

So, let’s get started!

What is Kubernetes?

“Kubernetes, also known as “kube” or “k8s” is an open-source framework for managing containerized workloads and services that allows declarative setup as well as automation. It has a huge and fast expanding ecology. Services, support, and tools for Kubernetes are widely accessible.”

Source: https://medium.com/skale-5/19-memes-about-kubernetes-86d4ee87ba1b

Why Kubernetes?

Better management through modularity

Containers enable applications to be broken down into smaller chunks with explicit boundaries between concerns. We can fundamentally rethink how distributed applications are built thanks to the abstraction layer provided for each individual container image. This modular approach speeds up development by allowing smaller, more focused teams to work on individual containers. However, containers alone will not be sufficient; a framework for integrating and coordinating these modular components is required. Kubernetes does this in part by utilizing Pods, which are often a group of containers managed as a single application. File systems, kernel namespaces, and an IP address are shared across the containers. Kubernetes eliminates the temptation to squeeze too much functionality into a single container image by allowing containers to be collocated in this way.

Deploying and updating software at a scale

DevOps arose as a way for accelerating the development, testing, and release of the software. It has resulted in a change in focus away from infrastructure management and toward managing how software is deployed and updated at scale. Most infrastructure frameworks do not support this concept, but Kubernetes does, thanks to Kubernetes Controllers in particular. Infrastructure for managing the application lifecycle is simple to utilize thanks to controllers. Unlike typical, all-inclusive PaaS options, Kubernetes allows for a wide range of application types to be supported. It doesn’t mandate application frameworks (such as Wildfly), limit supported language runtimes (Java, Python, Ruby), limit 12-factor applications, or differentiate between “apps” and “services.” Kubernetes is capable of running stateless, stateful, and data-processing workloads. Kubernetes should be able to execute any programme that can run in a container.

Laying the foundation for cloud-native apps

Other management and orchestration solutions have evolved, which is not unexpected given the interest in containers. Apache Mesos with Marathon, Docker Swarm, AWS EC2 Container Service (ECS), and HashiCorp’s Nomad are also popular alternatives. Although these frameworks are beginning to resemble each other in terms of features and capabilities, Kubernetes continues to be extremely popular because of its design, innovation, and vast open source community. Kubernetes is a watershed moment for DevOps because it enables teams to keep up with the demands of modern software development. Teams have been forced to script their software deployment, scaling, and updating routines in the absence of Kubernetes.

A new-age infrastructure framework

Developers are increasingly being asked to design apps that operate on a variety of platforms, including dedicated on-premise servers, virtualized private clouds, and public clouds like AWS and Azure. Because applications and the tools that support them are traditionally tightly linked to the underlying infrastructure, using alternate deployment strategies, despite their potential benefits, proved costly. In numerous ways, this meant that programmes grew reliant on a certain environment. By offering essential features for containers without imposing limits, Kubernetes avoids infrastructure lock-in. It accomplishes this by combining elements from the Kubernetes platform, such as Pods and Services.

Kubernetes Clusters

Kubernetes allows users to cluster together groups of hosts running Linux containers, and makes managing those clusters simple and efficient. Kubernetes clusters may span on-premises, public, private, and hybrid cloud hosts. As a result, Kubernetes is an excellent platform for hosting cloud-native applications that require quick scalability, such as Apache Kafka-based real-time data streaming.

Source: https://cloud.google.com/kubernetes-engine/kubernetes-comic

Uses of Kubernetes

  1. The main benefit of using Kubernetes in your environment, especially if you’re optimizing app development for the cloud, is that it provides a framework for scheduling and running containers on physical or virtual machine clusters (VMs).
  2. It also aids you in completely implementing and relying on a container- based architecture in production scenarios. And, because Kubernetes is focused on automating operational activities, you can do a lot of the same things with your containers that you do with other application platforms or management systems.

Some major benefits of using Kubernetes are:

  • Containers may be orchestrated over several hosts.
  • Make better use of hardware to get the most out of the resources you need to operate your business apps.
  • Control and automate the deployment and updating of applications.
  • To execute stateful programmes, mount and add storage.
  • On-the-fly scalability of containerized apps and their resources.
  • Declaratively manage services, which ensures that your deployed applications are always functioning as you planned.
  • Auto Placement, auto-restart, auto replication, and autoscaling allow your apps to self-diagnose and self-heal.
Source: https://kubernetes.io/docs/concepts/overview/components/

How does Kubernetes work?

“A cluster is a Kubernetes deployment that is up and running. A Kubernetes cluster is divided into two parts: the control plane and the computing machines, or nodes.”

Each node is a separate Linux environment that can be either real or virtual. Pods, which are made up of containers, run on each node.

The control plane is in charge of keeping the cluster in the appropriate condition, such as which apps are running and which container images they are using. The applications and workloads are run on computer machines.

Kubernetes is a container orchestration system that runs on top of an operating system and communicates with pods of containers running on nodes.

The Kubernetes control plane receives directives from a system administrator and passes them to the computing machines. This handoff uses a variety of services to determine which node is most suited for the task at hand. It then assigns resources to that node’s pods to do the specified job.

A Kubernetes cluster’s intended state specifies which applications or workloads should be running, as well as which images they should use, which resources should be made accessible to them, and other similar configuration parameters. The way you handle containers from an infrastructure standpoint hasn’t changed much. Your container control is simply at a higher level, allowing you to have more control without having to micromanage each container or node.

Your responsibilities include setting up Kubernetes and defining nodes, pods, and the containers that reside within them. Kubernetes is in charge of container orchestration. It’s entirely up to you where you run Kubernetes. This may happen on bare metal servers, virtual machines, public cloud providers, private clouds, and hybrid cloud environments, among other things. One of Kubernetes’ main advantages is that it can run on a variety of infrastructure.

Source: https://medium.com/skale-5/19-memes-about-kubernetes-86d4ee87ba1b

Conclusion

Kubernetes is an ever-growing framework, and by the time this blog gets published, it might get some new updates and amazing features. But, it’s rightly said, “Growing should never stop”.

So, keep hustling and “K8S Do It”!!

This blog has been contributed by Saniya Bhargav, 3rd year Computer Engineering student and a member of Mozilla Club BBSR from KIIT University, Bhubaneswar.

For further queries, you can follow Saniya on Twitter and LinkedIn.

If you have come up to this, do drop an 👏 if you liked this article.

Follow Mozilla BBSR on LinkedIn, Instagram and on YouTube for such awesome content.

Good Luck 😎 and happy coding 👨‍💻

--

--