Kubernetes is an open-source container cluster orchestration system for automated deployment, scaling and management of containerized applications.

Kubernetes allows you to:

  • Orchestrate containers across multiple hosts

  • Deploy and update your applications quickly and predictably

  • Continuously scale your applications

  • Seamlessly deploy new features

  • Optimally utilize your hardware resources

Kubernetes also offers further benefits, including:

  • Health check and self-repair: Containers that fail are restarted automatically. If a node fails, the containers contained in the node are redistributed. If containers do not respond to the user-defined health check, Kubernetes automatically stops these containers. The open-source container cluster orchestration system also offers auto-placement, auto-replication and auto-scaling.

  • Automatic bin packing: Kubernetes places containers automatically based on the required resources and other restrictions without impairing availability.

  • Automated rollouts and rollbacks: Kubernetes distributes changes to the software or the configuration using a rollout. The open-source container cluster orchestration system also monitors the application's status. If a problem occurs, the system automatically executes a rollback.

  • Service discovery and load balancing: Kubernetes gives containers their own IP addresses and a single DNS name for a set of containers, and can load-balance across them.

  • Batch execution: Kubernetes can manage your batch and CI workloads. It can also replace containers that fail, if desired.

Architecture

A Kubernetes cluster consists of master and worker nodes. The master automatically orchestrates the cluster. It receives commands from the administrator and forwards them to the workers. Linux containers grouped into pods are run on the worker nodes.

Important Technical Terms

Master: The master orchestrates the cluster.

Worker: These machines run the requested and assigned tasks via Linux containers that are grouped into pods.

Pod: A group consisting of one or more containers that are used on a single node. All containers in a pod share the same IP address, IPC, host name and other resources, for example shared storages. Each pod is linked to the node on which it is scheduled and remains there until it is stopped or deleted. Each pod also runs at least one Kubelet and one container runtime.

Kubelet: The Kubelet is an agent of the master. This process is run on each node and handles the communication between the master and the node. Kubelets make sure that the defined containers have been started and are running.

kubectl: kubectl is the command line interface for managing Kubernetes clusters.

Replication Controller: A replication controller makes sure that a defined number of pod replicas are running at all times.

You can find more information at https://kubernetes.io/docs/home/