Kubernetes is closely associated with containers. In order to understand Kubernetes, it is important to first understand containers.
In a traditional environment, an application consists of an operating system, middleware (libraries and dependencies) and the application itself.
This presents some issues - this monolithic stack of operating system, middleware and application must be tested and deployed as a whole, while each layer needs to be managed and maintained separately - such as deploying essential security updates for the operating system or updating middleware.
Differences between what is in development, testing or production environments can lead to issues in troubleshooting and increase the time needed to deploy services.
Containers address this by introducing an abstraction layer. A container includes everything it needs to run the application, including dependencies, making applications more portable. The container platform can run multiple containers upon a single operating system to avoid the need to run multiple copies of the operating system. Containers can also declare dependencies on other container images to maximise and promote re-use. For example, an application that needs a database can specify a requirement for a database that can be created using an existing container image. If the database requires a critical update, it can be applied one time and the image then refreshed across multiple instances.
Kubernetes started life as an internal Google project to address the need to coordinate and manage Google's vast container-based infrastructure, before being released as a full-blown open-source community project in 2014.
Kubernetes consists of deployment tools, a centralised management system known as Kubernetes Master and multiple client nodes. The Kubernetes master, driven by the deployment tools, coordinates deployment of containers to specific nodes. The container images are stored in a centralised image registry. As new instances are required, container images are obtained from the centralised image registry.