Master nodes - manage, plan, schedule, monitor nodes

Control plane components

ETCD - database key value format

Kube-scheduler - identifies the right node to place a container on based on the container resource requirements.

Controllers manager

Node-Controller - control new node join the cluster, detect unavailable node…

Replication-Controller - control the desire number of container on the replication group

Kube-apiserver - primary manage component, responsible for orchestrating all operation within the cluster, it expose the K8S API which is used by external users to perform management operations on the cluster as well as the various controllers to monitor the state of the cluster and make necessary changes as required and byt the worker nodes to comunicate with the server.

Container runtime engine - for example docker, containerD or rocket

Worker nodes - host application as containers

Kubelet - agent that runs on which node in the cluster (need instruction from the kube apiserver)

Kube-proxy - allow comunication between container on different nodes (communication between worker node are enabled). It ensure that the necessary rules are in place on the worker nodes to allow the containers running on them to reach each other


Pods are the components of the application workload.

The control plane manages the worker nodes and the Pods in the cluster

Control plane usually runs across multiple computers and a cluster usually runs multiple nodes, providing fault-tolerance and high availability.

image.png

Each node runs the kube-proxy component. You need a network proxy component on each node to ensure that the Service API and associated behaviors are available on your cluster network.

Kube-scheduler - Control plane component that watches for newly created Pods with no assigned node, and selects a node for them to run on.

Factors taken into account for scheduling decisions include: individual and collective resource requirements, hardware/software/policy constraints, affinity and anti-affinity specifications, data locality, inter-workload interference, and deadlines.

ETCD - If your Kubernetes cluster uses etcd as its backing store, make sure you have a back up plan for the data.

kube-controller-manager - Logically, each controller is a separate process, but to reduce complexity, they are all compiled into a single binary and run in a single process.

Node controller - Responsible for noticing and responding when nodes go down.