It seems that the computer science is like health science. Every few months new technologies arrise, and people in IT have to read and learn all new stuff about it.
The last years, after the virtualization revolution, we have a new technology approach, the containerized environment.
Containers are used for some years now, but after the initial implementations, some needs were created, so the community came acros adequate solutions. One of the problems, was the scaling and managability of the big number of containers across multiple hosts, which brought us two major players: Kubernetes and Openshift.
But before diving into the characteristics of those two, lets first get a glimpse of the containerized environment.
You can find information regarding containers from: Linux Containers and Wikipedia and a lot of other sources on the internet.
Basicaly what a container is could be explained in the schema from RedHat:
The well known virtualization, starts a virtual computer within a physical computer, and there a whole deployment of operating system and applications is being installed and runs.
On the other hand a container environment uses directly the host with the operating system installed, and a service that serves containers runs. This service takes a package of files, and runs the applications without the need of an extra operating system. Imaging a compressed zip file, that includes the application, the libraries, the configuration files and the content needed to be served as a whole application.
For example, you can have a web service, serving static content (which by the way can be scaled out and it is portable), including the web server, the content and the configuration within a single file/pod/container. This way, you can have more than one container serving a web page, in the same or more hosts.
Now comes the problem. How do you cenrally manage and manipulate all these services (also called micro services), from one location having a way to monitor them also?
The solution was an orchestration tool.
The major, well know tools are two. Kubernetes and Openshift.
Kubernetes is more a pod manipulation system, targeting on the core of the containerized environment, giving the ability to fully manipulate containers any way the operator sees fit:
On the other hand Openshift is a platform for quickly and easily deploying application containers, which is based on a kubernetes cluster. So in terms of technological approach, kubernetes is the container cluster manipulation application, and Kubernetes extends the clustering into an application deploying solution based on containers.
It seems that we will continue learning as the computer technology kees inventing new things, in order to make our science better by the time.