Important Terminologies

Node

Cluster

Containers

Pods

Deployments

Service

Node

It is a single machine used for computation. It can be a physical machine, virtual machine or data centre or just a bare metal physical hardware.

A node is a worker machine in Kubernetes, previously known as a minion. A node may be a VM or physical machine, depending on the cluster.

Nodes are where applications run.

Cluster

A collection of nodes is called a cluster.

In Kubernetes, nodes pool together their resources to form a more powerful machine. These nodes share workload amongst each other. Cluster can have different types of nodes. Any node can replace any other node.This helps Kubernetes with high availability and to great extent fault tolerance.

A set of machines, called nodes, that run containerised applications managed by Kubernetes. A cluster has at least one worker node and at least one master node.

Containers

A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

Pods

A Pod is the basic execution unit of a Kubernetes application–the smallest and simplest unit in the Kubernetes object model that you create or deploy. A Pod represents processes running on your Cluster.

A Pod encapsulates an application’s container (or, in some cases, multiple containers), storage resources, a unique network IP, and options that govern how the container(s) should run. A Pod represents a unit of deployment: a single instance of an application in Kubernetes, which might consist of either a single container or a small number of containers that are tightly coupled and that share resources.

Pods group one or more containers which can share resources and network. All containers in a pod can communicate with each other easily.

It is good practice to group containers dependent on each other in a pod. They can also be seen as the unit that can be easily replicated to scale up and down and as traffic increases or decreases.

Deployments

A deployment can be thought as a wrapping layer which declares how many replicas of a pod to run at a time. When a deployment is added to the cluster, it automatically creates up the required number of pods, and then monitors them. If a pod dies, the deployment will automatically re-create it.

A development is primarily driven by a state which is defined in a YAML file. State is defined by objects. Objects are nothing but pods, service, controllers etc.

Kubernetes makes changes such as creating and killing containers, pods, etc in order to achieve this state.

You describe a desired state in a Deployment, and the Deployment Controller changes the actual state to the desired state at a controlled rate. You can define Deployments to create new ReplicaSets, or to remove existing Deployments and adopt all their resources with new Deployments.

Service

In Kubernetes service is an abstraction to expose application running on pods to be accessible internally or externally as a network service.