Was ist Kubernetes?
Kubernetes ist ein Open Source-System für die Orchestrierung von Containern. Es automatisiert den Betrieb von Containern und erleichtert die Orchestrierung.Es kümmert sich um die Bereitstellung und Verwaltung der Cloud-Ressourcen. Es ist auch bekannt unter dem Namen “kube” oder “k8s”.
Was ist Kubernetes?
Durch die Orchestrierung und Automatisierung werden viele der manuellen Prozesse, die mit der Bereitstellung und Skalierung von containerisierten Anwendungen einhergehen, eliminiert.
Das bedeutet, Du kannst Gruppen von Hosts, auf denen Container laufen, in Cluster zusammenfassen und Kubernetes hilft dir dabei, diese Cluster auf eine einfache und effiziente Weise zu verwalten. Die Container können in privaten Cloud-, öffentlichen Cloud- und hybriden Cloud-Umgebungen verwaltet werden.
Das System wurde ursprünglich von Google entwickelt und im Jahr 2015 mit der Version 1.0 veröffentlicht. Es unterstützt eine Reihe von Tools einschließlich Docker. Docker ist eine Software, die die Erstellung und den Betrieb von Containern ermöglicht. Mit Docker kannst Du Container wie extrem leichtgewichtige, modulare virtuelle Maschinen behandeln. Und mit diesen Containern erhältst du Flexibilität – Du kannst sie erstellen, einsetzen, kopieren und zwischen Umgebungen migrieren. Die Orchestrierung durch Kubernetes wird von vielen führenden Cloud Plattformen unterstützt. K8s ist nach der sogenannten Master-Slave Architektur aufgebaut. Der größte Vorteil der Verwendung von Kube in Deiner Umgebung ist, dass Dir damit ein System zur Verfügung steht, mit der Du Container auf Clustern von physischen oder virtuellen Maschinen einplanen und ausführen kannst. Es hilft Dir also dabei, eine containerbasierte, verlässliche Infrastruktur in Produktionsumgebungen vollständig zu implementieren. Und weil es bei k8s um die Automatisierung von operativen Aufgaben geht, kannst Du damit viele ähnliche Dinge erledigen, wie auf anderen Anwendungsplattformen oder Management-Systemen, aber eben für Deine Container.
Wie funktioniert Kubernetes?
Auf den Slaves laufen die Docker Container und die Slaves werden vom Master gesteuert. Es werden sogenannte “Pods” orchestriert. Pods sind die kleinste bereitstellbare Einheit. Sie sind die Arbeitsprozesse, die auf den Slaves, in diesem Fall als “Nodes” bezeichnet, laufen. Pods können einen oder mehrere Container beinhalten. Der Cluster mitsamt seinen Nodes wird über den Master gesteuert. Der Master kommuniziert mit den einzelnen Nodes über auf diesen laufende Kubelets. Die Kommunikation erfolgt über einen API-Server. Auf dem Master läuft eine sogenannte Instanz des “etcd”, der zentralen Key-Value-Datenbank für sämtliche Informationen, welche für das Management des Clusters relevant sind, sowie ein “Scheduler” der dafür verantwortlich ist, neu erzeugte Pods einem Node zuzuteilen. Die automatisierten Controllerprozesse überwachen und steuern die Cluster und können zum Beispiel einen ausgefallenen Node durch einen identischen ersetzen. Kubernetes läuft aufgesetzt auf einem Betriebssystem und interagiert mit den Pods von Containern, die auf den Nodes laufen. Der Master empfängt Befehle vom Administrator und leitet diese Befehle an die untergeordneten Nodes weiter. Diese Übergabe arbeitet mit einer Vielzahl von Diensten, um automatisch zu entscheiden, welcher Node am besten für die Aufgabe geeignet ist. Er weist dann Ressourcen zu und legt in jedem Pod die Nodes fest, welche den gewünschten Auftrag durchführen sollen.
Was ist ein Kube-Cluster?
Ein Kube-Cluster besteht aus einem Master-Node und einer Gruppe von Worker-Nodes. In einer Produktionsumgebung werden diese in einem verteilten Setup auf mehreren Nodes ausgeführt. Zu Testzwecken können alle Komponenten auf demselben Node (physisch oder virtuell) mit “minikube” ausgeführt werden.
Kubernetes hat sechs Hauptkomponenten, die einen funktionierenden Cluster bilden:
- API-Server
- Planer
- Controller-Manager
- Kubelet
- Kube-Proxy
- etcd
Jede dieser Komponenten kann als Standard-Linux-Prozess oder als Docker-Container ausgeführt werden.
In k8s bündeln Nodes ihre Ressourcen zu einer leistungsfähigeren Maschine. Wenn Du Programme auf dem Cluster bereitstellst, übernimmt es intelligent die Verteilung von Arbeit an die einzelnen Nodes für dich. Wenn Nodes hinzugefügt oder entfernt werden, verschiebt sich der Cluster nach Bedarf. Es sollte Dir egal sein, welche einzelnen Maschinen den Code tatsächlich ausführen.
Wenn dieses Bienenstock-ähnliche System Dich an die Borg aus Star Trek erinnert, bist Du nicht allein. “Borg” ist der Name für das interne Google-Projekt, auf dem Kubernetes basiert.
Einsatzgebiete/Fazit
Kubernetes kann in vielen verschiedenen Gebieten eingesetzt werden. Du kannst damit die Orchestrierung von Containern über mehrere Hosts veranlassen, Anwendungsbereitstellungen und -aktualisierungen steuern und automatisieren und Hardware besser nutzen, um die notwendigen Ressourcen für den Betrieb Deiner Unternehmensanwendungen zu maximieren. Des Weiteren kannst Du einen Storage aufsetzen und hinzufügen, um bestimmte Anwendungen auszuführen. Außerdem kannst Du mithilfe von verschiedenen Funktionen eine Gesundheitsprüfung Deiner Applikationen und gegebenenfalls eine Selbstheilung durchführen. Kubernetes befindet sich derzeit in der Version 1.7, die sich auf die Sicherheit und die Unterstützung von Stateful-Anwendungen in Containern konzentriert. Als eine neuere und sich schnell entwickelnde Technologie wird k8s viele Funktionen entwickeln und sich durch eine Alpha-Phase zu einer (stabilen) Beta bewegen. Obwohl Google die Technologie eingeführt hat, hat Kubernetes viele Beiträge aus verschiedenen Bereichen der Containerindustrie. Jeder kann versuchen, über eine oder mehrere spezielle Interessengruppen zum Projekt Kubernetes beizutragen, weil es Open Source ist. Zu den Top-Unternehmen, die Code für das Projekt schreiben, gehören unter anderem Red Hat, Rackspace und IBM.
Rückmeldungen