Kubernetes Components

Kubernetes is a highly modular system, allowing you to build custom setups.
With power comes complexity, and this post describes at least what type of components you will run.

Nodes

There are 2 types on nodes in a Kubernetes cluster:

  • master (hosting Control Plane)
  • worker (hosting everything else)

It's not a strict separation, as in some cases masters can also run workloads, e.g. in 1-node clusters like Minikube.

Types of components

In general there are following types of components you would see in a Kubernetes system:

  • Stadard Kubernetes components
  • Cloud specific components
  • Custom system components (Addons)
  • Application components

Below is an example of a real system based on AWS and some specific choices made for optional components.

Kubernetes components

Stadard Kubernetes components

Control Plane consists of 4 main components:

  • kube-apiserver
  • kube-scheduler
  • kube-controller-manager
  • etcd (the only stateful component, can be hosted separately)

Worker system components include:

  • kubelet
  • kube-proxy
  • Contaner Runtime (e.g. Docker)

Custom system components (Addons)

There are usually lots of service tools installed in Kubernetes cluster.
They are used for specific needs and usually have multiple options in each category:

  • Web UI (dashboard)
  • Autoscaling
  • Ingress controller
  • Monitoring
  • Service Mesh
  • Authentication

Application components

Application can be expressed in multitude of Kubernetes resources, but usual set is:

  • Deployment
  • ReplicaSet
  • Pods
  • Service Account
  • Service
  • Ingress
  • Certificate

References