DevOps on Kubernetes

   page       attach   
abstract

This project has the objective to find out some of the possibilities offered by the Kubernetes software.

Kubernetes is an open-source software that allows to istantiate a cluster composed of nodes that aims to distribute services over the network, using structures called pods.

A cluster is a collection of nodes.

Nodes are physical or virtual machines that contains pods. There are two types of nodes inside a cluster:

  • The Master Node, mandatory node that has the role to coordinate all the components inside a cluster. It performs this task with the API Server instance that executes inside, which exposes REST APIs to perform CRUD (Create, Read, Update and Delete) operations on cluster's objects. The Master Node, called also Control Plane, contains other structures than the API Server, such as a distributed open-source database called ETCD that only the API Server can interoperate with. This storage contains all the cluster informations, and by default it's inside the Control Plane but it can be also configured to be on the outside.
  • The Worker Node(s), there is no minimal requirement for them. There can be multiple instances or also no one of them inside of a cluster. Their only role is to carry pods and keep them running when needed. Inside each Worker Node there is a component called Kubelet that communicates with the API Server assuring that the pods inside his node are working such as the the requirements (in terms of replicas).

Services are the way to expose the access to pods. They include a Load Balancing Policy if the pods they refer to have multiple replicas inside the cluster.

Pods are structures that contains one or more containers, each of them sharing:

  • Memory (or Volume)
  • Network space and port space
  • Process Identifiers (PIDs)
  • Inter-Process Communications (IPC) 

Finally, there is another structure called Deployment that refers to a collection of replicas of the same pod. Tipically, pods are instantiaded with Deployment's specification.

Kubectl is the command-line tool used to interoperate with a cluster's API Server.

This projects aims to study how to develop a Kubernetes cluster where users without administrator access can submit some atomic workload into and waiting the related results when it completes.

outcomes