Kubernetes (abgekürzt “K8s”) ist eine Software zur Orchestrierung von Containern. Als Open Source Projekt wurde Kubernetes (griechisch für Steuermann, Kapitän) in 2014 durch Google gestartet. Zu dieser Zeit hatte Google schon lange eine sehr mächtige, auf eigene Technologien abgestimmte Software Lösung für die Container-Orchestrierung, mit Namen “Borg” (später “Omega”), im Einsatz. Entwickler von Borg waren auch an der Entwicklung von Kubernetes beteiligt, die viele ihrer eigenen Erfahrungen eingebracht haben. Ziel war es, eine Container Orchestrierung zu schaffen, die für jedermann einsetzbar ist.
Obwohl vor Kubernetes schon andere Orchestrierungslösungen für Container existierten, hat sich Kubernetes rasant entwickelt und ist seit Ende 2017 der de-facto Standard geworden.
Was macht Kubernetes so besonders?
Kelsey Hightower, Google Mitarbeiter und Kubernetes Experte, sagt dazu:
Kubernetes does the things that the very best system administrator would do: automation, failover, centralized logging, monitoring. It takes what we’ve learned in the DevOps community and makes it the default, out of the box.
Kubernetes automatisiert viele Dinge, die bisher durch Systemadministratoren erledigt werden mussten, bspw. Netzwerk Konfiguration, Loadbalancing, Upgrades, Patches, etc.
Einige dieser Aufgaben sind direkt in Kubernetes integriert wie bspw. die Lastenverteilung oder die automatische Skalierung, andere werden als Add-ons oder Erweiterungen bereitgestellt.
Kubernetes ist also für Systemadministratoren eine große Hilfe. Aber auch für die Softwareentwicklung bietet Kubernetes entscheidende Vorteile, da Zeit und Aufwand für das Deployment erheblich reduziert werden. So sind auch Zero-Downtime Deployments kein Problem, da Kubernetes als Standard sogenannte rolling updates durchführt.
Besonders nützlich ist zudem die automatische Skalierung in Kubernetes. Lastspitzen führen nicht mehr automatisch zu einer Downtime der Anwendung. So können bspw. beim Erreichen einer festgelegten CPU-Auslastung einfach weitere Container des gleichen Typs (sogenannte replicas) hinzugefügt werden, bis die Auslastung wieder unter einen definierten Wert gefallen ist. Wenn die Auslastung dann wieder zurückgeht, kann dieser vordefinierte Prozess auch in umgekehrter Reihenfolge ausgeführt werden, um Ressourcen zu schonen.
Kubernetes kann dabei helfen, die Kosten für die IT-Infrastruktur zu reduzieren, da es die zur Verfügung stehenden Ressourcen besser ausnutzt. Physikalische Server und auch Cloud Server laufen sehr häufig im Leerlauf. Diese Ressourcen werden als Vorrat gehalten meist nicht genutzt. Mit Kubernetes können mehrere Workloads diese Ressourcen verwenden und die Autoskalierung sowie automatisches Failover sind auch bereits umgesetzt.
Autoskalierung wurde auch schon vor Kubernetes bei verschiedenen Cloud Providern angeboten. Mit Hilfe von Kubernetes kann man diese Funktionalität jedoch unabhängig vom jeweiligen Cloud Provider nutzen, da Kubernetes quasi die einheitliche Plattform für den Betrieb der eigenen Applikation bildet und wiederum bei verschiedenen Cloud Providern oder auch In-House genutzt werden kann.
Kubernetes bietet also eine ganze Reihe von Vorteilen und größtmögliche Unabhängigkeit für den Betrieb von Applikationen. Gerne können Sie Kubernetes bei uns testen, einen unserer Workshops besuchen oder mit uns über Ihre individuellen Anforderungen sprechen.