Objective
To illustrate kubernetes cluster architecture and understand critical Kubernetes components.
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.