The Kubernetes API Server

In Kubernetes, all communications and operations between the control plane components and external clients, such as kubectl, are translated into RESTful API calls that are handled by the API server. Effectively, the API server is a RESTful web application that processes RESTful API calls over HTTP to store and update API objects in the etcd datastore.

The API server is also a frontend component that acts as a gateway to and from the outside world, which is accessed by all clients, such as the kubectl command-line tool. Even the cluster components in the control plane interact with each other only through the API server. Additionally, it is the only component that interacts directly with the etcd datastore. Since the API server is the only way for clients to access the cluster, it must be properly configured to be accessible by clients. You will usually see the API server implemented as kube-apiserver.

Note

We will explain the RESTful API in more detail in the The Kubernetes API section later in this chapter.

Now, let's recall how the API server looks in our Minikube cluster by running the following command:

kubectl get pods -n kube-system

You should see the following response:

Figure 4.1: Observing how the API server is implemented in Minikube

As we saw in previous chapters, in the Minikube environment, the API server is referred to as kube-apiserver-minikube in the kube-system namespace. As you can see in the preceding screenshot, we have a single instance of the API server: kube-apiserver-minikube.

The API server is stateless (that is, its behavior will be consistent regardless of the state of the cluster) and is designed to scale horizontally. Usually, for the high availability of clusters, it is recommended to have at least three instances to handle the load and fault tolerance better.