Zum Inhalt springen

Kubernetes

aus Wikipedia, der freien Enzyklopädie
Kubernetes

colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | Logo
Basisdaten

Hauptentwickler Cloud Native Computing Foundation
Entwickler Google
Erscheinungsjahr 2014<ref name="github first-commit">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig First GitHub commit for Kubernetes.] In: github.com. , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
Aktuelle Version Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Aktuelle Vorabversion Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Betriebssystem Linux
Programmier­sprache Go
Kategorie Container-Orchestrierung
Lizenz Apache-Lizenz 2.0
deutschsprachig ja
https://kubernetes.io/

Kubernetes (auch als K8s bezeichnet, deutsche Aussprache: [Die Seite Vorlage:IPA/styles.css hat keinen Inhalt.ˌkuːbɐˈneːtəs]) ist ein von Google entwickeltes Open-Source-System zur Verwaltung von Container-Anwendungen. In diesem Umfeld wird die Verwaltung der technischen Container-Infrastruktur auch als Orchestrierung bezeichnet. Es kann sowohl fremdgehostet von verschiedenen Anbietern für Cloud Computing gebucht als auch selbst lokal auf eigener oder fremder Hardware betrieben werden.

Geschichte[Bearbeiten]

Google hat bereits nach der Jahrtausendwende einen großen Fokus auf Container gesetzt, sodass nahezu alle eigenen Dienste darin betrieben wurden. Dies führte aufgrund der Größe zu verschiedenen Problemen, weswegen das Unternehmen „Borg“, ein System zur Verwaltung von Clustern, entwickelte. Borg verwaltete hunderttausende Aufgaben von tausenden Anwendungen, die verteilt auf zehntausenden Servern liefen. Zu den Hauptaufgaben gehört das Planen, (Neu-)Starten und Überwachen der Google-Dienste mit Fokus auf Skalierung und Hochverfügbarkeit. Die Komplexität von Ressourcenverwaltung und Fehlerbehandlung sollten von den Entwicklern abstrahiert werden, damit diese sich auf die Anwendung konzentrieren können. Zwar gab es Alternativen, diese waren aus Sicht von Google jedoch nicht widerstandsfähig genug und es fehlten Funktionen.<ref></ref>

Kubernetes (von {{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value) „Steuermann“) wurde ursprünglich von Joe Beda, Brendan Burns und Craig McLuckie entwickelt.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Google Made Its Secret Blueprint Public to Boost Its Cloud.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 7. Juli 2017 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Kurze Zeit später stießen weitere Google-Entwickler wie Brian Grant und Tim Hockin hinzu. 2014 stellte Google Kubernetes als Open-Source-Projekt der Öffentlichkeit vor.<ref></ref> Es handelt sich um eine Neuentwicklung von Borg, welches zu diesem Zeitpunkt bereits mehr als ein Jahrzehnt alt war. Man wollte die besten Ideen aus Borg in Kubernetes integrieren und darüber hinaus einige Probleme lösen, die in den Jahren zuvor mit Borg identifiziert worden waren. Viele der von Google bereitgestellten Kubernetes-Entwickler waren zuvor an Borg beteiligt. Im Gegensatz zu Kubernetes war Borg ein internes System, welches nicht frei verfügbar war. Da sich Google bei Kubernetes für eine öffentliche Entwicklung als quelloffene Software entschieden hat, kann jeder den Nachfolger nutzen oder sogar daran mitarbeiten.<ref>Borg: The Predecessor to Kubernetes. 23. April 2015, abgerufen am 4. April 2023 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Version 1.0 wurde am 21. Juli 2015 veröffentlicht.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Google veröffentlicht Vollversion Kubernetes 1.0.] In: ZDNet.de. , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 7. Juli 2017.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Dabei wurde auch die Gründung der Cloud Native Computing Foundation unter dem Dach der Linux Foundation angekündigt und Kubernetes wurde von Google an diese gespendet.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Cloud Native Computing Foundation soll Container-Technologien zusammenbringen.] In: pro-linux.de. , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 7. Juli 2017.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Architektur[Bearbeiten]

Datei:Kubernetes.png
Schematischer Aufbau

Eine Kubernetes-Installation besteht aus dem Zusammenspiel mehrerer Hostrechner zu einem Cluster. Es gibt zwei Kategorien von hosts:

Control Plane
kümmert sich um Verwaltungsaufgaben im Cluster und führt keine Anwendungscontainer aus. Die Control Plane bietet eine API zur Konfiguration an<ref>kubernetes.io – The Kubernetes API</ref>, verwaltet alle spezifischen Konfigurationen in einer etcd-Instanz und wendet diese automatisch auf alle Anwendungen, sowie den Cluster selbst an. Es ist möglich, mehrere Instanzen der Control Plane gleichzeitig zu betreiben, um Hochverfügbarkeit zu erreichen.
Worker Nodes
dienen dazu, die eigentliche Arbeitslast der Anwendung abzuarbeiten. Die notwendige Anzahl und Leistung dieser „Worker Node Server“ ermittelt sich anhand der Ressourcenanforderung der Container. Je ressourcenintensiver die Container sind, desto mehr oder performantere Worker Nodes werden benötigt. Sie haben keine Verwaltungsaufgaben.

Kubernetes erzeugt ein Netzwerk, so dass die im Cluster verteilten Anwendungen untereinander kommunizieren können.<ref>kubernetes.io – Cluster Networking</ref>

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Funktionen[Bearbeiten]

Kubernetes bietet eine Reihe von Möglichkeiten die Orchestrierung von komplexen Container-basierten Anwendungen zu unterstützen.

  • Kubernetes fasst einen oder mehrere Container zu einem pod zusammen. Pods laufen zusammen auf einem node und werden im Cluster Netzwerk mit einer IP-Adresse im Subnetz des jeweiligen Workernodes angesprochen. Laufende pods werden anhand definierter Faktoren überwacht und bei einem Ausfall neu gestartet.
  • Mehrere dieser pods werden als service<ref>kubernetes.io – service/</ref> mit einem network proxy<ref>kubernetes.io – kube-proxy</ref>, meist iptables, mit einer vom Workernode unabhängigen IP-Adresse zusammengefasst. So ist jeder Dienst immer unter dieser einen IP-Adresse erreichbar, auch wenn die dazugehörigen pods auf einem anderen Workernode neu gestartet werden.
    • Um eine Hochverfügbarkeit auch im Störungsfall aufrechtzuerhalten, können pods redundant auf mehreren Hosts betrieben werden. Dazu gibt es in Kubernetes Objekte, wie ReplicaSets und Deployments oder StatefulSets.
    • So kann eine sinnvolle Lastverteilung der eingehenden Anfragelast auf die einzelnen pods erfolgen. Bei hohem Anfragevolumen können zusätzliche pods gestartet werden.
    • services können entweder mit einem Nodeport<ref>kubernetes.io – service/nodeport</ref> direkt oder durch einen ingress<ref>kubernetes.io – ingress/</ref> per http bzw. https nach außen exponiert werden. Dazu muss ein Ingress Controller, z. B. ein Nginx installiert sein.<ref>kubernetes.io – Ingress Controllers</ref>
  • configmaps und secrets können als Konfigurationsdateien und Passworte (z. B. für Datenbanken) in jeden Container in einem Pod gemounted werden.
  • Des Weiteren ermöglicht es Kubernetes, persistente Datenspeicher an die pods zu mounten (z. B. Storage Area Network).<ref>Storage Volume</ref>

Einsatz[Bearbeiten]

Datei:Containerization2.svg
Vergleich traditioneller Ansatz vs. virtuelle Maschinen vs. Containerisierung von Anwendungen

Container sind eine natürliche Weiterentwicklung virtueller Maschinen zur effizienten Nutzung verfügbarer Hardware-Ressourcen. Da ein Container in vielen Fällen lediglich einen kleinen Teil einer größeren Anwendung enthält (Microservices), braucht es oftmals viele Container, um eine große Anwendung vollständig bereitzustellen.

Im Betrieb von Container-Anwendungen spielen Verwaltungsaufgaben wie die Bereitstellung, die Anfragelast-bezogene automatische Skalierung sowie das Monitoring der zum Betrieb notwendigen Anwendungscontainer und ihrer Infrastruktur eine wichtige Rolle. Kubernetes dient als Werkzeug zur Unterstützung dieser Orchestrierungsaufgaben.

Eingesetzt wird Kubernetes in kleinen und einfachen Containerumgebungen bis hin zu komplexen und verteilten Anwendungsfällen großer Technologieanbieter und ihrer containerbasierten Cloud-Produkte. Einige Beispiele sind hier: Microsofts Azure,<ref>Kubernetes on Microsoft’s Azure Container Service is now generally available auf techcrunch.com vom 21. Februar 2017.</ref> IBM Cloud,<ref>Kubernetes now available on IBM Bluemix Container Service auf ibm.com vom 19. März 2017.</ref> Red Hat OpenShift,<ref>Why Red Hat Chose Kubernetes for OpenShift auf blog.openshift.com vom 7. November 2016.</ref> Amazons EKS,<ref>Highly available and scalable Kubernetes service</ref> Googles Kubernetes Engine<ref>Googles Kubernetes Engine</ref> und Oracles OCI.<ref>Überblick über Container Engine for Kubernetes, auf docs.cloud.oracle.com</ref><ref></ref>

Literatur[Bearbeiten]

Weblinks[Bearbeiten]

Commons: Kubernetes – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise[Bearbeiten]

<references />

Vorlage:Hinweisbaustein