Kubernetes is an open source platform originally developed by Google. Today it is supported and developed by the Cloud Native Computing Foundation. With Kubernetes, containers can be orchestrated. The platform enables the simplification and the automated setup, provision, operation, scaling and maintenance of the containers. It is the basis for many cloud-native applications that consist of microservices.
The platform works on a master-slave basis with a structure consisting of pods, nodes and clusters. Containers can be operated on physical or virtual computers. Kubernetes provides a technical basis for modern cloud-native applications consisting of many individual microservices.
Kubernetes was originally developed by Google. The software appeared for the first time in 2014. A year later, in 2015, Google donated the software to the Cloud Native Computing Foundation (CNCF). Today it is responsible for the further development of the platform. In addition to Kubernetes, the CNCF is responsible for many other software solutions in the field of cloud native computing.
Kubernetes is a large, rapidly growing ecosystem and has a large community of supporters. The software is compatible with container engines such as Docker and is available on common cloud platforms. It is under Apache License 2.0. The current version (as of June 2020) is 1.18.5.
The Kubernetes platform offers a wide range of functions for orchestrating containers. Important functions are:
- Automated set-up of containers
- Automated rollout of containers
- Automatic scaling of containers
- Automatic resource allocation
- Realization of persistent storage for stateless containers
- Management of the links and communication between the containers
- automatic load distribution
- Realization of high availability environments and provision of redundancies
Kubernetes master-slave architecture consists of the following individual components:
- Nodes (master nodes and worker nodes)
The pod is the smallest unit of architecture. A Kubernetes pod can contain one or more containers. One or more pods run as processes on the Kubernetes nodes. The nodes are physical or virtual computers. Several nodes can be combined into clusters. The worker nodes of a cluster are controlled and monitored by a master node. Master nodes receive commands and manage the pods with their containers on the individual worker nodes.
The master communicates with the nodes via various processes and assigns configurations to the pods, distributes them to other nodes, starts and stops containers or replaces failed nodes with a node which has an identical function. The master node takes into account the available and required resources and monitors the utilization and the operating status of the nodes.
Terms such as Kubernetes and Docker are often used in the same context. However, they are conceptually different software components with different tasks. Kubernetes is a platform for orchestrating containers. Docker is a container engine for providing and executing the actual containers.
Kubernetes is able to roll out, operate, manage and scale containers, but a container engine such as Docker is necessary for the provision and execution of the container runtime environments. Kubernetes supports runtime environments such as Docker, containerd, cri-o or rktlet and others. The functionality of the platform arises from the combination of the container runtime environment of a certain engine and the container orchestration by Kubernetes.
Container orchestration with Kubernetes offers numerous advantages. Compared to classic monolithic applications, cloud-native microservice applications can be developed and deployed more quickly. Manual processes for operating and scaling the containerized application are no longer necessary, as Kubernetes automates many tasks. Kubernetes provides container platforms with high availability and stable operation.
The concept with pods, nodes and clusters allows almost any redundancy to be mapped. If a microservice needs more resources, Kubernetes provides it automatically and without service interruption. With the help of Kubernetes, concepts such as rolling updates can be implemented. Complete applications can be updated without any external impact by gradually updating the pods. Thanks to Kubernetes and the containers, applications run platform-independently and are easy to migrate or reproduce.
Kubernetes is compatible with on-premises platforms and various cloud models such as private cloud, public cloud, hybrid cloud or multicloud. This offers great flexibility in the development, provision and operation of microservice-based applications. Thanks to container technology, the individual microservices can be moved between different environments and cloud models with minimal effort to provide optimal performance and functionality. Kubernetes ensures that the containers with their microservices are managed independently of the cloud environment. Cloud solutions from different providers can be integrated and dependencies on individual providers or technical platforms can be prevented. With Kubernetes, cloud computing unfolds its full potential.
If you like the content, we would appreciate your support by buying us a coffee. Thank you so much for your visit and support.