Kubernetes

Hardin Software unterstützt sie bei der Entwicklung und beim Betrieb von verteilten Anwendungen einschließlich Microservices sowie beim Aufbau und Betrieb von Continuous Integration, Delivery & Deployment Plattformen (CI/CD) auf Basis von Kubernetes.

Kubernetes ist eine noch relativ junge, aber stark expandierende Software-Plattform, mit der man Docker- und Container-Anwendungen automatisiert bereitstellen, skalieren und betreiben kann. Da Kubernetes nicht nur eine Serverkomponente, sondern auch leistungsfähige Werkzeuge für Clients und eine Programmierschnittstelle (API) beinhaltet, eröffnen sich zahlreiche technische Möglichkeiten, mit Kubernetes im Zusammenspiel mit anderen Werkzeugen das Deployment von Anwendungen zu beschleunigen und insbesondere zu automatisieren. Das reduziert den zeitlichen Aufwand erheblich, um unterschiedliche Versionen und Konfigurationen von Anwendungen in unterschiedlichen Integrations-, Test-, Abnahme-, Sandbox- und Produktions-Umgebungen bereitzustellen.

Die hinreichend bekannten bzw. führenden Cloud- und Rechenzentrum-Dienstleister bieten Kubernetes als Infrastruktur-Dienstleistung einschließlich Wartung und Support neben der Bereitstellung von Servern, virtuellen Maschinen, Datenbanken und anderen Diensten an. Als Open-Source-Produkt kann Kubernetes prinzipiell auch auf eigenen Servern installiert und betrieben werden, wobei der administrative Aufwand und die Kosten für den Eigenbetrieb eines Kubernetes Clusters im Vergleich zu den tendenziell geringen Preisen der Cloud-Dienstleister nicht unterschätzt werden sollte. Hier müssen die Kosten für Selbstbetrieb oder Outsourcing mit den unternehmerischen Anforderungen bspw. an Sicherheit und Compliance abgeglichen werden.

Kubernetes orchestriert sogenannte Pods als kleinste deploybare Einheit. Pods sind die Arbeiterprozesse, die auf sog. Nodes laufen, also auf  physischen oder virtuellen Maschinen, die zu einem Kubernetes Cluster hinzugefügt wurden. Pods beinhalten einen oder auch mehrere (Docker-) Container, die sich eine Container-Runtime und die zugeteilten Ressourcen teilen. Der Kubernetes Cluster mit seinen Nodes wird vom sog. Kubernetes Master gesteuert, der zu diesem Zweck mit den einzelnen Nodes kommuniziert. Der Kubernetes Master muss nicht zwingend, aber sollte gleichwohl zu Zwecken der Ausfallsicherheit und ggf. auch der Skalierbarkeit in einem verteilten Cluster bestehend aus mehreren Servern betrieben werden. Der Kubernetes Master kann Pods überwachen, fehlerhafte Pods löschen und selbständig neu starten. Er kann die laufenden Pods durch Pods mit neuen Versionen von Container-Images aktualisieren, er kann die Zahl der laufenden Pods auf Basis von Überwachung der Last skalieren sowie ausgefallene Nodes durch identische Nodes ersetzen. Der Kubernetes Master kann weiterhin die Konfigurationen und die Secrets (bspw. Passwörter) der Container verwalten und sie den gestarteten Pods zielgenau bereitstellen.

Die erste Version von Kubernetes wurde im Sommer 2015 veröffentlicht. Kubernetes wurde von Google entworfen und an die Cloud Native Computing Foundation unter dem Dach der Linux Foundation übergeben. Als noch junges Produkt mit breiter Unterstützung aus der Industrie wurde und wird Kubernetes seitdem ständig weiter entwickelt und verbessert.