Kubernetes is made up of a large number of different objects that are responsible for different tasks. These objects include pods, services, nodes, clusters as well as the API server.
Pods are the smallest deployment unit that contains one or more containers and shares common resources. Nodes are physical or virtual machines in a Kubernetes cluster on which pods are executed. A service allows you to deploy a group of pods running a specific application as a network service. A cluster is a group of nodes that work together to deploy and manage applications.
The controllers belonging to the objects have various tasks and are responsible for monitoring the desired state of a system and ensuring that this state is achieved and maintained. Controllers are able to recognize desired changes in the cluster and take appropriate measures to achieve the target state. In the event of hardware failures, a controller automatically ensures that the target state of the associated resources is restored as quickly as possible.
With an underlying standardized markup language the description of objects (such as any number of replicated pods) will be considerately simplified. Operators make it possible to automate extensive applications and their lifecycle in Kubernetes. An operator uses the Kubernetes API and resources to implement specific application logic that goes beyond the standard functions of Kubernetes.
All resources are managed via a (highly available) API server. This acts as an interface for interaction with the Kubernetes cluster. It is responsible for processing API requests, managing resources and communicating between different components of the cluster.