Kubernetes

from Wikipedia, the free encyclopedia

Kubernetes

logo
Basic data

Maintainer Cloud Native Computing Foundation
developer Google
Publishing year 2014
Current  version 1.18.6
( July 15, 2020 )
operating system Linux , Microsoft Windows , macOS
programming language Go
category Container orchestration
License Apache license 2.0
German speaking No
https://kubernetes.io/

Kubernetes (also known as K8s , German pronunciation: [ ˌkuːbɐˈneːtəs ], English pronunciation: [ ˌkuːbərˈnetiːz ]) is an open source system for automating the provision , scaling and management of container applications , originally designed by Google and sent to the cloud Native Computing Foundation (CNCF) was donated. It aims to provide a “platform for the automated recording, scaling and maintenance of application containers on distributed hosts”. It supports a number of container tools including Docker .

The orchestration by Kubernetes is used by leading cloud platforms such as Microsoft's Azure , IBM Cloud , Red Hat's Open Shift , Amazon's AWS supports and Oracle OCI.

history

Kubernetes (from Greek κυβερνήτης 'helmsman' ) was founded by Joe Beda, Brendan Burns and Craig McLuckie. A short time later, other Google developers such as Brian Grant and Tim Hockin joined them. In 2014, Kubernetes was announced by Google.

Version 1.0 was released on July 21, 2015. The founding of the Cloud Native Computing Foundation under the umbrella of the Linux Foundation was announced and Kubernetes was donated to them by Google.

construction

Schematic structure

Kubernetes orchestrates so-called “pods” as the smallest usable unit. Pods are the worker processes that run on "nodes" (physical or virtual machines in a cluster ). Pods contain one or more containers, which then share a container runtime and the allocated resources.

The cluster with its nodes is controlled by a dedicated machine, the "Kubernetes Master", which communicates with the individual nodes via the "Kubelets" running in them. An instance of the etcd , the central key-value database for all information important for the management of the cluster, as well as the automated controller processes and a "scheduler", which assigns newly created pods to a node, run on the Kubernetes master .

The controllers monitor and control the cluster and its components. You can e.g. B. Replace failed nodes with identical nodes.

architecture

Kubernetes is structured according to the so-called master-slave architecture . With its components, the master controls the nodes (minions) on which the containers run.

Kubernetes Master

The Kubernetes Master is the control unit of the cluster, which distributes and manages the pods and the containers they contain on the nodes. There are several processes to manage these tasks. These can be on a single master or - for the purpose of high availability - distributed over several. The processes are divided into:

etcd

The etcd is a persistent, lightweight, distributed key value database developed by CoreOS for storing the configuration of the Kubernetes cluster. This contains the overall status of the cluster and is maintained by the API server.

API server

The API server is one of the most important components of the architecture. It supplies all other components or services, internal and external, JSON -formatted information via a REST interface. The API server saves all information persistently in the etcd. The authorization can take place via various mechanisms.

Scheduler

As an independent component, the scheduler decides on which node a pod is started. This depends on the resources available. It manages the utilization of the nodes and monitors their load. To do this, the scheduler must know the resource requirements of each pod. Guidelines such as QoS , node affiliations and z. B. Locations of the nodes in the cluster (data centers).

Controller manager

The controller manager is the process that contains all control mechanisms in which z. B. a DaemonSet or a Replication Controller are running. It communicates with the API server to read and write all statuses.

Kubernetes Node

The Kubernetes Node, also known as the Minion, is a single server for containers. A container runtime environment is installed on each of these nodes (e.g. Docker or rkt (Rocket) ) and the components described below:

Kubelet

The kubelet is responsible for the status of each node. It is controlled by the Controller Manager and takes over starting and stopping containers. If a container is no longer running, the Kubelet also takes care of the restart on the same node. Every few seconds will report it to the Kubernetes master about his status. In the event of an error or the unavailability of the node, the master recognizes this based on the unreported status. The controller manager then restarts the pods on other "healthy" nodes.

Kube proxy

The Kube proxy is a proxy with an integrated load balancing function . It opens the ports to the container services and manages the connections.

cAdvisor

The cAdvisor is integrated in the kubelet and records the resources of a container (CPU, memory). Other monitoring solutions can consult this service to offer long-term recordings.

Microservices

Kubernetes is often used as a way to host a microservices-based implementation because it, and the associated ecosystem of tools, provides all of the capabilities required to solve core problems of a microservice architecture .

literature

  • Kelsey Hightower: Kubernetes: A Compact Introduction . dpunkt.verlag, Heidelberg 2018, ISBN 978-3-86490-542-1 .
  • Sébastien Goasguen: Kubernetes Cookbook: Building Cloud Native Applications . O'Reilly, 2018, ISBN 978-1-4919-7968-6 .
  • Bilgin Ibryam, Roland Huß: Kubernetes Patterns: Reusable Elements for Designing Cloud-Native Applications . O'Reilly, 2019, ISBN 978-1-4920-5028-5 .

Web links

Individual evidence

  1. ^ First GitHub commit for Kubernetes . In: github.com . June 7, 2014.
  2. Release 1.18.6 . July 15, 2020 (accessed July 16, 2020).
  3. What is Kubernetes? - Kubernetes
  4. Kubernetes on Microsoft's Azure Container Service is now generally available on techcrunch.com from February 21, 2017.
  5. Kubernetes now available on IBM Bluemix Container Service on ibm.com from March 19, 2017.
  6. Why Red Hat Chose Kubernetes for OpenShift on blog.openshift.com on November 7, 2016.
  7. ^ Highly available and scalable Kubernetes service
  8. https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengoverview.htm
  9. Avi Miller: Announcing Oracle Container Services 1.1.9 for use with Kubernetes . ( oracle.com [accessed April 23, 2018]).
  10. Google Made Its Secret Blueprint Public to Boost Its Cloud ( en-US ). Accessed July 7, 2017.
  11. ^ Cade Metz: Google Open Sources Its Secret Weapon in Cloud Computing . In: Wired . June 10, 2014, ISSN  1059-1028 ( wired.com [accessed July 29, 2019]).
  12. Google releases full version Kubernetes 1.0 . In: ZDNet.de . July 22, 2015.
  13. Cloud Native Computing Foundation aims to bring container technologies together . In: pro-linux.de . June 22, 2015. Accessed July 7, 2017.
  14. ^ Kubernetes Components. Website kubernetes.io, accessed July 8, 2017 (American English).