An open-sourced container system, Kubernetes provides a robust, easy-to-use platform for running a large number of containers in a production environment.
Kubernetes got its start from an idea by Google engineer Craig McLuckie, who wanted to turn Google’s software tool, Borg, into an open-source project. This did not go over well with management at first, as Borg is a powerful tool that runs many Google services, such as Google Search and Gmail. However, the whole idea behind this initiative was to help Google’s efforts to evolve into cloud computing—by providing developers and enterprises the tools to build and run applications on its cloud.
Once approved, other Google engineers who originally worked on Borg soon joined in and the project was announced mid-2014. Originally codenamed Project Seven (for the character Star Trek Seven of Nine, a “friendlier Borg”), it was soon officially named Kubernetes, a Greek word for pilot or ship’s captain. It finally saw release on June 21, 2015 and was donated as seed technology to the Cloud Native Computing Foundation.
Given its design as a less complex, and easier-to-use Borg, Kubernetes embraced open-source technology such as Docker and Rocket. With Kubernetes, Google sees to share a future where container technology is widespread.
The Kubernetes Architecture
To start off, what is a Kubernetes Cluster? You can see it in the diagram below.
Kubernetes clusters follow a master-slave system where a master control panel controls individual nodes. It uses labels as nametags to identify things. It may run queries based on these labels.
The Kubernetes Master Control Panel consists of the following:
- API Server – handles REST requests and updates API object states in etcd.
- Controller Manager – daemon that manages core control loops, like Daemonset Controller and Replication Controller. Monitors the cluster’s shared state and makes alterations to move from current to desired state.
- Scheduler – matches available resources with the demands of the workload.
- etcd – stores the configuration data and current state of the entire cluster. Used as a reference for other components to go into their desired states.
Kubernetes Nodes contain:
- Kubelet – runs the node. It starts, stops, and maintains the application containers (which are grouped by pods).
- Kube-proxy – Kubernetes network proxy running on the node as well as load balancer. Reroutes traffic to the correct container according to request.
- cAdvisor – collects resource usage and performance data on each node
Kubernetes architecture diagram
You can find a more in-depth look at the Kubernetes Digitalocean tutorial, an excellent Kubernetes tutorial for beginners.
Be sure to read more about how Kubernetes can help you, why you should use it to Dockerize your apps, and a Kubernetes tutorial for AWS. If you want to get your business fast-tracked on Kubernetes, find out how we can help you. And don’t forget to check out a Kubernetes tutorial video below.