High-level architecture of Kubernetes

A functioning cluster needed six components:

  1. API server
  2. Scheduler
  3. Controller manager
  4. kubelet
  5. kube-proxy
  6. etcd

Each one could run as a normal Linux process, or inside a container.

Control plane

The master ran the API server, the scheduler, and the controller manager. It could be set up as multi-master. The scheduler and the controller manager elect a leader. The API servers can sit behind a load balancer.

The API server exposes a REST interface to Kubernetes resources and is configurable. The scheduler places containers on nodes using policies, metrics, and resource requests, and it can be tuned with command-line flags. The controller manager reconciles the cluster’s actual state with the desired state from the API. It is a control loop, and it is configurable too.

Workers

Every worker ran kubelet, kube-proxy, and the Docker engine. kubelet talked to Docker and kept the containers that should be running actually running. kube-proxy handled network connectivity to those containers.

The post also pointed at rkt as an alternative to the Docker engine: rkt getting started guide.

The diagram was from a Kubernetes training slide by @wattsteve.

Written in December 2017. Newer writing here is on VMware Cloud Foundation, Avi, and NSX.

Leave a Reply