Categories
Technology

Kubernetes Fundamentals

Kubernetes Architecture

Kubernetes Server Node Types Making up Cluster

  1. Control Plane Nodes
  2. Worker Nodes

Control Plane Nodes

These are the brains of the operation. Control plane nodes contain various components which manage the cluster and control various tasks like deployment, scheduling and self-healing of containerized workloads.

kube-apiserver

This is the centerpiece of Kubernetes. All other components interact with the api-server and this is where users would access the cluster.

etcd

A database which holds the state of the cluster. etcd is a standalone project and not an official part of Kubernetes.

kube-scheduler

When a new workload should be scheduled, the kube-scheduler chooses a worker node that could fit, based on different properties like CPU and memory.

kube-controller-manager

Contains different non-terminating control loops that manage the state of the cluster. For example, one of these control loops can make sure that a desired number of your application is available all the time.

cloud-controller-manager (optional)

Can be used to interact with the API of cloud providers, to create external resources like load balancers, storage or security groups.

Worker Nodes

The worker nodes are where applications run in your cluster. This is the only job of worker nodes and they don’t have any further logic implemented. Their behavior, like if they should start a container, is completely controlled by the control plane node.

container runtime

The container runtime is responsible for running the containers on the worker node. For a long time, Docker was the most popular choice, but is now replaced in favor of other runtimes like containerd.

kubelet

A small agent that runs on every worker node in the cluster. The kubelet talks to the api-server and the container runtime to handle the final stage of starting containers.

kube-proxy

A network proxy that handles inside and outside communication of your cluster. Instead of managing traffic flow on its own, the kube-proxy tries to rely on the networking capabilities of the underlying operating system if possible.

Namespaces

A Kubernetes namespace can be used to divide a cluster into multiple virtual clusters, which can be used for multi-tenancy when multiple teams share a cluster.

Note: Kubernetes namespaces are not suitable for strong isolation and should more be viewed like a directory on a computer where you can organize objects and manage which user has access to which folder.