Architecture and Components

An overview of Kubernetes' architecture and components

Terminology

Cluster

  • Multiple Nodes form a Cluster

Node

  • A compute instance (physical or virtual server)

Pod

  • Consists of one or more Containers

Container

  • A lightweight, portable OS (e.g., Linux) generally containing an application with all required components

Container Runtime Engine

  • Software that manages and runs containers on the Node e.g., Docker, containerd, cri-o, gVisor, etc.


Control Plane Components

  • The Control Plane consists of the core components needed to manage a Kubernetes cluster

  • These sit on the Master Node (which is abstracted from you in a cloud-managed service like AWS EKS)

kube-apiserver

  • The kube-apiserver is the primary management component of Kubernetes

  • This exposes an API that we can authenticate to and perform tasks like monitoring the state of the cluster and components, deploying Pods, grabbing information, and more

  • All components of the cluster will go through this API

etcd

  • A key/value store used for storing all Kubernetes cluster data

  • The data is immutable, anytime it needs to be updated, the whole structure is re-generated with the new data

  • The key/value store always preserves the previous values so this data will grow indefinitely unless it's configured to remove old versions

kube-scheduler

  • Assigns newly created Pods to suitable Nodes in the Cluster based on things like resource requirements, constraints, and policies

kube-controller-manager

  • Moniters the state of the cluster through the api-server and makes changes attempting to move the current state towards the desired state

  • Many controllers can exist on a Cluster e.g., replication controller, deployment controller, etc.


Data Plane Components

kubelet

  • An agent running on each Node (also including Master Node) responsible for ensuring Pods are healthy and running

  • Receives instructions from the kube-scheduler to create/delete Pods

kube-proxy

  • A network proxy which maintains network rules on the Nodes e.g., when a new Service is deployed the kube-proxy ensures a rule maps it to the correct Pods running the service

  • This can be replaced with Container Network Interface (CNI) Network plugins such as Cilium, Flannel, Calico, and others

Last updated

Was this helpful?