View All Chapters
CHAPTER
2
|
Kubernetes Concepts

Kubernetes Components

Kubernetes Components

As mentioned previously, Kubernetes can largely be divided into Master and Node Components. There are also some add-ons such as the Web UI and DNS that are provided as a service by managed Kubernetes offerings (e.g. GKE, AKS, EKS).

Master Components

Master components globally monitor the cluster and respond to cluster events. These can include scheduling, scaling, or restarting an unhealthy pod. Five components make up the Master components: kube-apiserver, etcd, kube-scheduler, kube-controller-manager, and cloud-controller-manager.

  • kube-apiserver: REST API endpoint to serve as the frontend for the Kubernetes control plane
  • etcd: Key value store for the cluster data (regarded as the single source of truth)
  • kube-scheduler: Watches new workloads/pods and assigns them to a node based on several scheduling factors (resource constraints, anti-affinity rules, data locality, etc.)
  • kube-controller-manager: Central controller that watches the node, replication set, endpoints (services), and service accounts
  • cloud-controller-manager: Interacts with the underlying cloud provider to manage resources
Image Credit: Linux.com

Node Components

Unlike Master components that usually run on a single node (unless High Availability Setup is explicitly stated), Node components run on every node.

  • kubelet: Agent running on the node to inspect the container health and report to the master as well as listening to new commands from the kube-apiserver
  • kube-proxy: Maintains the network rules
  • container runtime: Software for running the containers (e.g. Docker, rkt, runc)