What is Kubernetes?
Kubernetes is an open-source container management (orchestration) system used for automating application deployment, scaling, and management. It was originally designed by Google and is now maintained by the Cloud Native Computing Foundation
What are the Kubernetes Components?
Kubernetes Control Plane Components
The Control Plane’s components make global decisions about the cluster as well as detecting and responding to cluster events.
etcd
etcd is a consistent and highly-available key-value store used as Kubernetes’ backing store for all cluster data. It contains the current status of the pods in which the node is running on, how many nodes the cluster currently has, what is the state of those nodes, how many replicas of deployment are running, services names, and others.
kube-apiserver
kube-apiserver is a component of the Kubernetes control plane that exposes the Kubernetes API. The API server is the front end for the Kubernetes control plane. It is the frontend REST API of the cluster that receives manifests to create, update, and delete API objects such as services, pods, Ingress, and others.
kube-scheduler
kube-scheduler watches for newly created pods with no assigned node, and selects a node for them to run on. It basically listens to the kube-apiserver and the kube-controller-manager for newly created pods that are put into a queue and then scheduled to an available node by the scheduler.
kube-controller-manager
kube-controller-manager runs controller processes.
These controllers include:
- Node Controller: Responsible for noticing and responding when nodes go down.
- Replication Controller: Responsible for maintaining the correct number of pods for every replication controller object in the system.
- Endpoints Controller: Populates the Endpoints object.
- Service Account & Token Controllers: Create default accounts and API access tokens for new namespaces.
cloud-controller-manager
cloud-controller-manager runs controllers that interact with the underlying cloud providers. The cloud-controller-manager binary is an alpha feature introduced in Kubernetes release 1.6.
Kubernetes Node Components
Node components run on every node, maintaining running pods and providing the Kubernetes runtime environment.
kube-proxy
kube-proxy is a network proxy that runs on each node in your cluster, implementing part of the Kubernetes Service concept. This service watches the kube-apiserver for changes on defined services and keeps the network up to date via iptables rules that forward traffic to the correct endpoints.
kubelet
An agent that runs on each node in the cluster. It makes sure that containers are running in a pod.
container runtime
The container runtime is the software that is responsible for running containers. Kubernetes supports several container runtimes: Docker, containerd, CRI-O, and any implementation of the Kubernetes CRI (Container Runtime Interface).
Alternative to Kubernetes
Few products which can be alternative to Kubernetes are Docker Swarm and Mesos.