Kubernetes Intro
Tags: kubernetes, devops, cloud, tutorial
Published: 2023-01-12 06:00:14

**Kubernetes**, in simple terms, is a tool that helps you run and manage your containerized applications in a cluster of machines. It automates the deployment, scaling, and management of your applications, making it easy for you to run and maintain them. It does this by creating and managing small, lightweight containers for your applications, and then running those containers across a cluster of machines. This allows you to easily scale your applications and ensure they’re running smoothly and reliably, without having to manually manage each individual machine. Additionally, Kubernetes provides features such as automatic load balancing, self-healing, and automatic scaling, which helps you to keep your applications running smoothly and efficiently.

## History of Kubernetes

Kubernetes is an open-source container orchestration system for automating the deployment, scaling, and management of containerized applications. It was originally designed by Google and is now maintained by the Cloud Native Computing Foundation (CNCF).

The Kubernetes Project was open-sourced by Google in 2014 after using it to run production workloads at scale for more than a decade. Kubernetes provides the ability to run dynamically scaling, containerised applications, and utilising an API for management.

Kubernetes provides a platform-agnostic way to manage containerized workloads and services, allowing you to run applications in a variety of environments, including on-premises, in the cloud, or in a hybrid environment.

## What Kubernetes can do

Out of the box, K8S provides several key features that allow us to run immutable infrastructure. Containers can be killed, replaced, and self-heal automatically, and the new container gets access to those support **volumes**, **secrets**, **configurations**, etc., that make it function.

These key K8s features make your containerized application scale efficiently:

- **Horizontal scaling.**Scale your application [as needed](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/) from command line or UI.
- **Automated rollouts and rollbacks.**Roll out changes that monitor the health of your application—ensuring all instances don’t fail or go down simultaneously. If something goes wrong, K8S automatically rolls back the change.
- **Service discovery and load balancing.**Containers get their own IP so you can put a set of containers behind a single DNS name for load balancing.
- **Storage orchestration.**Automatically mount local or public cloud or a network storage.
- **Secret and configuration management.** Create and update secrets and configs without rebuilding your image.
- **Self-healing.**The platform heals many problems: restarting failed containers, replacing and rescheduling containers as nodes die, killing containers that don’t respond to your user-defined health check, and waiting to advertise containers to clients until they’re ready.
- **Batch execution.**Manage your batch and Continuous Integration workloads and replace failed containers.
- **Automatic binpacking.**Automatically schedules containers based on resource requirements and other constraints.

## What Kubernetes can’t do

Kubernetes can do a lot of cool, useful things. But it’s just as important to consider what Kubernetes isn’t capable of:

- It does not replace tools like Jenkins, so it will not build your application for you.
- It is not middleware, so it will not perform tasks that a middleware performs, such as message bus or caching, to name a few.
- It does not care which logging solution is used. Have your app log to **stdout**, then you can collect the logs with whatever you want.
- It does not care about your config language (e.g., [JSON](https://www.w3schools.com/js/js_json_intro.asp)).

K8s is not opinionated with these things simply to allow us to build our app the way we want, expose any type of information and collect that information however we want.

## Competitors to Kubernetes

Of course, Kubernetes isn’t the only tool on the market. There are a variety, including:

- Docker Compose—good for staging but not production-ready.
- Nomad—allows for cluster management and scheduling but it does not solve secret and config management, service discover, and monitoring needs.
- Titus—Netflix’s open-source orchestration platform doesn’t have enough people using it in production.

Overall, Kubernetes offers the best out-of-the-box features along with countless third-party add-ons to easily extend its functionality.

Stay Tuned!