Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kubernetes edits + open questions #1298

Merged
merged 7 commits into from
Sep 12, 2022
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 20 additions & 38 deletions content/en/kubernetes.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,49 +7,31 @@ tags: ["infrastructure", "", ""]

## What it is

Kubernetes, often abbreviated as K8s, is an open source container orchestrator that
automates the life-cycle of [containerized](/container/) applications on modern infrastructures.
It's like a data center operating system that manages applications
running across a [distributed system](/distributed-systems/)
(just like the OS on your laptop that manages your apps).

Kubernetes schedules containers across [nodes](/nodes/) in a [cluster](/cluster/).
It bundles several infrastructure constructs, sometimes referred to as “primitives,”
like an instance of an app, load balancers, persistent storage, and others together
in a way that they can be composed into applications.

Kubernetes enables automation and extensibility,
allowing users to deploy applications declaratively in a reproducible way.
Software products and projects in the Kubernetes ecosystem take advantage of that automation and extensibility
to extend the Kubernetes [API](/application-programming-interface/).
This enables them to leverage Kubernetes’ automation and
make their tools more accessible to experienced Kubernetes practitioners.
Kubernetes, often abbreviated as K8s, is an open source container orchestrator.
It automates the lifecycle of containerized applications on modern infrastructures, functioning as a "datacenter operating system" that manages applications across a [distributed system](/distributed-systems/).

Kubernetes schedules [containers](container/) across [nodes](/nodes/) in a [cluster](/cluster/), bundling several infrastructure resources such as load balancers, persistent storages, and etc. to run containerized applications.
CathPag marked this conversation as resolved.
Show resolved Hide resolved

Kubernetes enables automation and extensibility, allowing users to deploy applications declaratively (see below) in a reproducible way.
Other software solutions in the Kubernetes ecosystem take advantage of that automation and extensibility.
CathPag marked this conversation as resolved.
Show resolved Hide resolved
Kubernetes is easily extendable via its [API](/application-programming-interface/), and its automation helps make other tools more accessible to experienced Kubernetes practitioners.
CathPag marked this conversation as resolved.
Show resolved Hide resolved

## Problem it addresses

Infrastructure automation and declarative configuration management have been important concepts for a long time and
have only become more pressing as [cloud computing](/cloud-computing/) has gained popularity.
As demand for compute resources increases and
organizations feel pressured to provide more operational capabilities with fewer engineers,
new technologies and working methods are required to meet that demand.
Additionally, the rise of cloud computing was paired with [containerization](/containerization/) and
organizations that were busy automating more traditional infrastructure needed a mechanism to
automate the configuration and deployment of their containers.
Infrastructure automation and declarative configuration management have been important concepts for a long time, but they have become more pressing as [cloud computing](cloud-computing/) has gained popularity.
As demand for compute resources increases and organizations need to provide more operational capabilities with fewer engineers, new technologies and working methods are required to meet that demand.
Additionally, the rise of cloud computing along with containerization and organizations busy automating more traditional infrastructure need a mechanism to automate the configuration and deployment of their containers.
CathPag marked this conversation as resolved.
Show resolved Hide resolved

## How it helps

Kubernetes helps with automation in a manner similar to traditional infrastructure as code tools
but has the advantage of working with containers
that are more resistant to configuration drift than virtual or physical machines.
Kubernetes works declaratively, which means that
instead of operators providing the instructions about how to do something
they instead describe, usually as manifest files (e.g. YAML), what they want to be done;
Kubernetes will take care of the "how" on its own.
Similar to traditional [infrastructure as code](/infrastructure-as-code/) tools, Kubernetes helps with automation but has the advantage of working with containers.
Containers are more resistant to configuration drift than [virtual](/virtual-machine/) or physical machines.

Additionally, Kubernetes works declaratively, which means that instead of operators instructing the machine how to do something, they describe — usually as manifest files (e.g., YAML) — what the infrastructure should look like.
Kubernetes then takes care of the "how."
iamNoah1 marked this conversation as resolved.
Show resolved Hide resolved
This results in Kubernetes being extremely compatible with infrastructure as code.

Kubernetes also self-heals.
This means that it ensures the cluster’s actual state always matches the operator’s desired state.
If Kubernetes detects a deviation, a Kubernetes controller kicks in and fixes it.
So while the infrastructure it uses may be continually changing
Kubernetes itself is continually, and automatically adapting to changes and
ensuring that it matches with the desired state.
Kubernetes also [self-heals](/self-healing/).
The cluster's actual state will always match the operator's desired state.
If Kubernetes detects a deviation from what is described in the manifest files, a Kubernetes controller kicks in and fixes it.
While the infrastructure Kubernetes uses may be continually changing, Kubernetes constantly and automatically adapts to changes and ensures that it matches with the desired state.