Kubernetes
Kubernetes
|
|
---|---|
Basic data
|
|
Maintainer | Cloud Native Computing Foundation |
developer | |
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
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
- Official website
- Kubernetes source code on Github
- Kubernetes: Architecture and Use - An Introduction with Examples
- Why cloud-native open source Kubernetes matters (Engl.)
Individual evidence
- ^ First GitHub commit for Kubernetes . In: github.com . June 7, 2014.
- ↑ Release 1.18.6 . July 15, 2020 (accessed July 16, 2020).
- ↑ What is Kubernetes? - Kubernetes
- ↑ Kubernetes on Microsoft's Azure Container Service is now generally available on techcrunch.com from February 21, 2017.
- ↑ Kubernetes now available on IBM Bluemix Container Service on ibm.com from March 19, 2017.
- ↑ Why Red Hat Chose Kubernetes for OpenShift on blog.openshift.com on November 7, 2016.
- ^ Highly available and scalable Kubernetes service
- ↑ https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengoverview.htm
- ↑ Avi Miller: Announcing Oracle Container Services 1.1.9 for use with Kubernetes . ( oracle.com [accessed April 23, 2018]).
- ↑ Google Made Its Secret Blueprint Public to Boost Its Cloud ( en-US ). Accessed July 7, 2017.
- ^ 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]).
- ↑ Google releases full version Kubernetes 1.0 . In: ZDNet.de . July 22, 2015.
- ↑ Cloud Native Computing Foundation aims to bring container technologies together . In: pro-linux.de . June 22, 2015. Accessed July 7, 2017.
- ^ Kubernetes Components. Website kubernetes.io, accessed July 8, 2017 (American English).