Key Concepts of Kubernetes

What is Kubernetes?

kubernetes-logo

Kubernetes is an open source orchestration system for Docker containers. It manages containerized applications across multiple hosts and provides basic mechanisms for deployment, maintenance, and scaling of applications.

It allows the user to provide declarative primitives for the desired state, for example “need 5 WildFly servers and 1 MySQL server running”. Kubernetes self-healing mechanisms, such as auto-restarting, re-scheduling, and replicating containers then ensure this state is met. The user just define the state and Kubernetes ensures that the state is met at all times on the cluster.

How is it related to Docker?

Docker provides the lifecycle management of containers. A Docker image defines a build time representation of the runtime containers. There are commands to start, stop, restart, link, and perform other lifecycle methods on these containers. Containers can be manually linked as shown in Tech Tip #66 or orchestrated using Fig as shown in Tech Tip #68. Containers can run on multiple hosts as well as shown in Tech Tip #69.

Kubernetes uses Docker to package, instantiate, and run containerized applications.

How does Kubernetes simplify containerized application deployment?

A typical application would have a cluster of containers across multiple hosts. For example, your web tier (Apache or Undertow) might run on a set of containers. Similarly, your application tier (WildFly) would run on a different set of containers. The web tier would need to delegate the request to application tier. In some cases, or at least to begin with, you may have your web and application server packaged together in the same set of containers. The database tier would generally run on a separate tier anyway. These containers would need to talk to each other. Using any of the solutions mentioned above would require scripting to start the containers, and monitoring/bouncing if something goes down. Kubernetes does all of that for the user after the application state has been defined.

Kubernetes is cloud-agnostic. This allows it run on public, private or hybrid clouds. Any cloud provider such as Google Cloud Engine. OpenShift v3 is going to be based upon Docker and Kubernetes. It can even run on a variety of hypervisors, such as VirtualBox.

Key concepts of Kubernetes

At a very high level, there are three key concepts:

  • Pods are the smallest deployable units that can be created, scheduled, and managed. Its a logical collection of containers that belong to an application.
  • Master is the central control point that provides a unified view of the cluster. There is a single master node that control multiple minions.
  • Minion is a worker node that run tasks as delegated by the master. Minions can run one or more pods. It provides an application-specific “virtual host” in a containerized environment.

A picture is always worth a thousand words and so this is a high-level logical block diagram for Kubernetes:

kubernetes-key-concepts

After the 50,000 feet view, lets fly a little lower at 30,000 feet and take a look at how Kubernetes make all of this happen. There are a few key components at Master and Minion that make this happen.

  • Replication Controller is a resource at Master that ensures that requested number of pods are running on minions at all times.
  • Service is an object on master that provides load balancing across a replicated group of pods.
  • Label is an arbitrary key/value pair in a distributed watchable storage that the Replication Controller uses for service discovery.
  • Kubelet: Each minion runs services to run containers and be managed from the master. In addition to Docker, Kubelet is another key service installed there. It reads container manifests as YAML files that describes a pod. Kubelet ensures that the containers defined in the pods are started and continue running.
  • Master serves RESTful Kubernetes API that validate and configure Pod, Service, and Replication Controller.

Kubernetes Design Overview provides great summary of all the key components as shown below.

 

kubernetes-architecture

Extensive docs are already available at github.com/GoogleCloudPlatform/kubernetes/tree/master/docs. A subsequent blog will explain a Kubernetes version of Tech Tip #66.

OpenShift v3 uses Kubernetes and Docker to provide the next level of PaaS platform.

As a fun fact, “Kubernetes” is actually a Greek word written as κυβερνήτης and means “helmsman of a ship”. In that sense, Kubernetes serves that role for your Docker containers.

Be Sociable, Share!
  • Tweet

32 thoughts on “Key Concepts of Kubernetes

  1. hi arun,

    ” A subsequent blog will explain a Kubernetes version of Tech Tip #66.”
    It would be useful to your readers how to separate an application/service so that they could deploy it on a cluster(1 or more hosts, doesn’t matter) of docker nodes using micro-services architecture.

    BR,
    ~A

  2. Pingback: Couchbase on Kubernetes | Voxxed
  3. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers | TechCrunch
  4. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers – Viral News Headlines
  5. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers - Cool Tech Reviews
  6. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers | Pakistan Biggest Portal to Provide Latest News & Entertainment!
  7. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers | PLPNews - Technology NEWS Daily
  8. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers – Tech Win
  9. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers | BizTechPartners
  10. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containersInnovatePC | InnovatePC
  11. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers - Tech News Junkies
  12. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers – CLOUD|FLARE|NEWS
  13. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers - The Deadline
  14. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers - Dramas Online
  15. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers - Tech News Metro
  16. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers - The Gadget Tech News
  17. Pingback: CoreOSのStackanetesを使えばOpenStackのコンテナをKubernetesで管理運用できる | TechCrunch Japan
  18. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers – AllMagNews
  19. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers | 神刀安全网
  20. Pingback: CoreOS’s Stackanetes lets you use Kubernetes to run OpenStack in containers | Game Vicio
  21. Nice and great article. Indeed useful information for docker and kubernetes beginneres

  22. Well done! It is so well written and interactive. Keep writing such brilliant piece of work. Glad i came across this post. Last night even i saw similar wonderful DevOps tutorial on youtube so you can check that too for more detailed knowledge on DevOps.https://www.youtube.com/watch?v=wz6tzaOhu58

  23. Nice post ! very infromative blog for docker & Kubernetes aspirants.Post more blogs like this on different tools.Thank you for sharing

  24. The information you’ve shared is really helpful. Take a wider look on this site in which I have seen some other useful article https://www.janbasktraining.com/ You can take a look at it. Happy reading!

Leave a Reply

Your email address will not be published. Required fields are marked *