Objective

To illustrate kubernetes cluster architecture and understand critical Kubernetes components.

Cluster Architecture

Kubernetes Cluster Architecture

Control Plane Components

Control Plane components run on one or mulptile control plane nodes.

kube-apiserver

kube-apiserver implements the Kubernetes API, and is designed to scale horizontally.

kube-apiserver runs as a static pod or systemd daemon, configured using Pod specification or systemd unit and configuration file in /etc.

etcd

etcd is a consistent and highly-available key value store used for storing Kubernetes’ cluster data.

etcd runs as a static pod or systemd daemon, configured using Pod specification or systemd unit and configuration file in /etc.

kube-scheduler

kube-scheduler watches for newly created Pods and selects a node for Pods to run on.

kube-scheduler runs as a static pod or systemd daemon, configured using Pod specification or systemd unit and configuration file in /etc.

kube-controller-manager

kube-controller-manager implements Node, Job, EndpointSlice and ServiceAccount controllers.

kube-controller-manager runs as a static pod or systemd daemon, configured using Pod specification or systemd unit and configuration file in /etc..

cloud-controller-manager

cloud-controller-manager implements cloud-specfic control logic.

cloud-controller-manager is optional. One example is vSphee Cloud Controller Manager.

cloud-controller-manager runs as a static pod or systemd daemon, configured using Pod specification or systemd unit and configuration file in /etc.

Node Components

Node Components run on every node including Control Plane nodes.

kubelet

kubelet is the node agent that runs on each node, and make sure containers are running in a pod.

kubelet runs as a system daemon, configured using systemd unit and configuration file in /etc.

kube-proxy

kube-proxy runs on each node as a network proxy that maintains network rules.

kube-proxy usually runs as a DaemonSet, configured using DaemonSet specification

Container runtime

Container runtime such as containerd, CRI-O is reponsible for running containers.

Containerd runs as a system daemon, configured using systemd unit and configuration file in /etc

Kubernete Nodes

A Kubernetes cluster consists of two kinds of nodes: control plane nodes and worker nodes.

Node can run on hardware, virtual platform like vSphere and KVM, cloud platform like Amazon AWS, MicrsoftAzure, Google GCP. Linux is the common Operating System running Kubernetes. Binaries and libraries are built on top of Linux Kernel, e.g Systemd, Kubelet, Containerd. Containerd/Runc is the most common container runtime. etcd, kube-apiserver, kube-scheduler, kube-control-manager, cloud-control-manager usually run as static pods on control plane nodes. kube-proxy runs as a daemonset.

Kubernetes Nodes

References