Intro to Kubernetes

What is Kubernetes?

Kubernetes is a software system that allows us to easily deploy and manage containerized applications on top of it. It relies on the features of Linux containers to run heterogeneous applications without having to know any internal details of these applications and without having to manually deploy these applications on each host. Because these apps run in containers, they don’t affect other apps running on the same server, which is critical when we run applications for completely different organizations on the same hardware. This is very important for cloud providers, because they strive for the best possible utilization of their hardware while still having to maintain complete isolation of hosted applications.

Kubernetes allows us to run our software applications across thousands of computer nodes as if they were all part of a single super machine. It abstracts away the underlying infrastructure and, by doing so, simplifies development, deployment, and management for both development and the operations teams.

Deploying applications through Kubernetes is always the same, whether your cluster contains only a couple of nodes or thousands of them. The size of the cluster makes no difference at all. Additional cluster nodes simply represent an additional amount of resources available to deployed apps.

▪ Open source container orchestration tool that developed by Google

▪ Automates many processes involved in deploying, managing and scaling containerized applications in different deployment environment.

UNDERSTANDING THE CORE OF WHAT KUBERNETES DOES

The system is composed of a master node and any number of worker nodes. When the developer submits a list of apps to the master, Kubernetes deploys them to the cluster of worker nodes. What node a component lands on doesn’t (and shouldn’t) matter—neither to the developer nor to the system administrator. The developer can specify that certain apps must run together and Kubernetes will deploy them on the same worker node. Others will be spread around the cluster, but they can talk to each other in the same way, regardless of where they’re deployed.

HELPING DEVELOPERS FOCUS ON THE CORE APP FEATURES

Kubernetes can be thought of as an operating system for the cluster. It relieves (make it easy) application developers from having to implement certain infrastructure-related services into their apps; instead they rely on Kubernetes to provide these services. This includes things such as service discovery, scaling, load-balancing, self-healing, and even leader election. Application developers can therefore focus on implementing the actual features of the applications and not waste time figuring out how to integrate them with the infrastructure.

HELPING OPS TEAMS ACHIEVE BETTER RESOURCE UTILIZATION

Kubernetes will run our containerized app somewhere in the cluster, provide information to its components on how to find each other, and keep all of them running. Because our application doesn’t care which node it’s running on, Kubernetes can relocate the app at any time, and by mixing and matching apps, achieve far better resource utilization than is possible with manual scheduling.

Most used container orchestration platform. Also known as "K8s" or "Kube"

Why do we need Kubernetes?

▪ Trend from Monolith to Microservices

▪ Containers are the perfect host for microservice applications

▪ Resulted in an increased usage of containers

▪ Manually managing hundreds or hundreds of 1000s containers is a lot of effort

▪ Kubernetes automates many of those manual tasks and provides

● High Availability or no downtime

● Automatic Scaling or high performance

● Disaster Recovery - Backup and Restore

● Self-Healing

Last updated