Updated: Jan 25
Kubernetes is the most popular container orchestrator in the software industry. A container orchestrator takes the containers you ask it to run, taking a series of servers or nodes and deciding how to run those containers' workloads across those nodes. Kubernetes was released to the market in 2015 by Google and is now maintained by an open-source community worldwide that Google is a part of.
Now, suppose you wonder what Kubernetes is doing or how it's related to Docker. In that case, Kubernetes is just a set of APIs that run on apps in containers to manage a ser of servers and then execute your containers on Docker by default. One thing to know is that Kubernetes is run on top of Docker and not on containers runtime. It's done by running a series of containers on top of that manage the multi-node system that it's controlling. Then, it gives you a set of those APIs and command-line tools to deploy and maintain the same server infrastructure that you would have similar to Docker Swarm.
There are many different options when it comes to Kubernetes and how you get it. The most common way you're going to use Kubernetes is from a cloud vendor that will provide Kubernetes as a service (like their other cloud services) to run your containers.
Kubernetes: Basic Terms
Kubernetes is a lot of things. So I want to break down some of the basic topology and part of the system before we get into installing an app on Kubernetes.
Kubernetes (K8s or Kube) - That is what I'm talking about, the whole orchestration system. It can be either a single server or multi-server setup with all the parts together to run your apps.
Kubectl - This is a command-line tool that you can use to communicate with Kubernetes API and manage apps.
Node - Like with Swarm, where we call nodes the servers inside that cluster, Kubernetes also refers to things as nodes.
Kubelet - This container will run an agent on each node to allow that node to communicate back with the Kubernetes master responsible for running the Kubernetes cluster.
Control Plane(Master) - This is simply a set of containers that manage the cluster.