Kubernetes is Google's open source system for managing Linux containers across private, public and hybrid cloud environments.
Kubernetes automates the deployment, scaling, maintenance, scheduling and operation of multiple application containers across clusters of nodes. Kubernetes contains tools for orchestration, service discovery and load balancing that can be used with Docker and Rocket containers. As needs change, a developer can move container workloads in Kubernetes to another cloud provider without changing the code.
With Kubernetes, containers run in pods. A pod is a basic unit that hosts one or multiple containers, which share resources and are located on the same physical or virtual machine. For each pod, Kubernetes finds a machine with enough compute capacity and launches the associated containers. A node agent, called a Kubelet, manages pods, their containers and their images. Kubelets also automatically restart a container if it fails.
Other core components of Kubernetes include:
- Master: Runs the Kuberenetes API and controls the cluster.
- Label: A key/value pair used for service discovery. A label tags the containers and links them together into groups.
- Replication Controller: Ensures that the requested numbers of pods are running to user's specifications. This is what scales containers horizontally, ensuring there are more or fewer containers to meet the overall application's computing needs.
- Service: An automatically configured load balancer and integrator that runs across the cluster.
Containerization is an approach to virtualization in which the virtualization layer runs as an application on top of a common, shared operating system (OS). As an alternative, containers can also run on an OS that's installed into a conventional virtual machine (VM) running on a hypervisor.
Containers are portable across different on-premises and cloud platforms, making them suitable for applications that need to run across various computing environments.
Kubernetes is mainly used by application developers and IT system administrators. A comparable tool to Kubernetes is Docker Swarm, which offers native clustering capabilities.