Introduction

Docker is a huge game changer in the development world. A production environment can easily be replicated in a development environment as well, since applications are running in containers.

A problem that emerges is orchestrating containers. We can have a microservice application, so that we need to orchestrate multiple containers. A solution to this problem is Kubernetes, or k8s.

Introduction to Kubernetes

As described right in the reference documentation, Kubernetes is an open source container orchestration engine. It is used for automating deployments and scaling of containerized applications.

Kubernetes is a complex topic. Installing Kubernetes requires specialized knowledge. For this reason there are cloud providers offering managed Kubernetes services like Amazon EKS, Google GKE.

On a developer machine the minikube project allows to quickly set up a local k8s cluster.

Kubernetes architecture

Kubernetes is a complex project with a complex architecture. Several of the main k8s components are the following:

  • Pods. A Pod is the smallest deployable unit in k8s. A Pod can run one or more containers. All the containers inside a Pod share storage and network resources.
  • Nodes. Nodes are virtual or physical machines that host pods.
  • ReplicaSets. A ReplicaSet ensures that a specific number (given as a parameter) of instances of a specific Pod are running at a specific time.
  • Deployments. Deployments provide declarative updates for Pods and ReplicaSets.
  • Services. Services expose a network application that run in one or more Pods to the host operating system.

Conclusions

Kubernetes is a complex container orchestration platform. Minikube can be used to easily get started with this topic.

https://kubernetes.io/docs/home/

https://minikube.sigs.k8s.io/docs/