Oops! Something went wrong while submitting the form.
Chapter
2
Kubernetes Concepts
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
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)