Google Kubernetes
Google Kubernetes ist Googles Open-Source-System zum Management von Linux-Containern über Private-, Public- und Hybrid-Cloud-Umgebungen hinweg. Kubernetes automatisiert Deployment, Skalierung, Wartung und Betrieb verschiedener Container-Anwendungen in unterschiedlichen Clustern und Nodes.
Hierzu bietet Kubernetes Tools für die Orchestrierung und Service-Bereitstellung sowie zum Load Balancing, die zum Beispiel mit Docker- und Rocket-Containern verwendet werden können. Wenn sich Anforderungen an die Container-Umgebung ändern, können Container-Workloads mit Kubernetes zu einem anderen Cloud-Anbieter verschoben werden, ohne hierfür Anpassungen am Code der entsprechenden Applikation vornehmen zu müssen.
Mit Kubernetes werden Container in sogenannten Pods ausgeführt. Ein Pod stellt eine Basiseinheit dar, die einen oder mehrere Container hostet, die sich Ressourcen teilen und auf der gleichen physischen oder virtuellen Maschine ausgeführt werden. Für jeden Pod kann Kubernetes automatisiert Maschinen mit ausreichend Compute-Kapazität finden und die zusammenhängenden Container starten.
Die Pods werden zusammen mit ihren Containern und Images von einem Node-Agent verwaltet, der Kubelet genannt wird. Kubelet ist auch für den automatischen Neustart eines Containers im Falle eines Ausfalls zuständig.
Weitere Kernkomponenten von Kubernetes sind:
- Master: Führt die Kubernetes-API aus und kontrolliert den Cluster.
- Label: Ein Schlüssel-/Wert-Paar für das Service-Management. Hiermit wird Containern ein Label angehängt, mit dem sie in Gruppen zusammengefügt werden können.
- Replication Controller: Hiermit lässt sich sicherstellen, dass gemäß den Vorgaben ausreichend Pods ausgeführt werden. Über den Replication Controller wird die horizontale Skalierung durchgeführt, um je nach Compute-Anforderung mehr oder weniger Container zur Verfügung zu stellen.
- Service: Ein automatisch konfigurierter Load Balancer, der über den gesamten Cluster hinweg ausgeführt wird.
Die Container-Virtualisierung ist eine Art der Virtualisierung, bei der die Virtualisierungsschicht als Anwendung auf Basis eines gemeinsamen, geteilten Betriebssystems ausgeführt wird. Als Alternative hierzu können Container auch auf einem Betriebssystem ausgeführt werden, das innerhalb einer herkömmlichen virtuellen Maschine auf einem Hypervisor läuft. Der letztgenannte Ansatz wird meist aus Sicherheitsgründen aufgrund der höheren Isolation der Container untereinander gewählt.
Container sind über On-Premise- und Cloud-Umgebungen hinweg äußerst portabel, was sie vor allem für Anwendungen attraktiv macht, die auf unterschiedlichsten Infrastrukturen ausgeführt werden müssen. Kubernetes ist eines der ältesten und populärsten Management-Tools für Container, eine Alternative hierzu wäre Swarm von Docker, das allerdings wesentlich jünger und entsprechend noch nicht so weit verbreitet wie Kubernetes ist.