oneclick wurde in den Gartner® Magic Quadrant™ für Desktop as a Service (DaaS) 2024 aufgenommen.

Kubernetes – Alles, was man wissen sollte

Als Open-Source-Cluster-Management-Plattform ist die steigende Popularität von Kubernetes eng mit der Verbreitung von Cloud-Diensten verbunden. Laut Google nutzen rund 54% der Fortune-100-Unternehmen Kubernetes. Es vereinfacht die Softwareentwicklung und IT-Infrastrukturen, indem es Container mit Softwareanwendungen verwaltet.

Der Tech Stack von oneclick™ läuft auf einem skalierenden Kubernetes-Cluster. Lesen Sie weiter, um einen genaueren Blick darauf zu werfen, was daran so unglaublich ist und warum es die Softwarewelt revolutioniert hat.

kubernetes logo

Was ist Kubernetes oder K8s?

Kubernetes ist ein Begriff, der sich aus dem altgriechischen abgeleitet hat und Steuermann oder Pilot bedeutet. Kubernetes wird manchmal als K8s abgekürzt, was die 8 Buchstaben nach dem K mit der Zahl darstellt.

Stellen Sie sich vor, der Entwickler sagt dem Steuermann: „Ich will eine skalierbare App, wie eine digitale Workstation, aber ich will nicht die Infrastruktur berücksichtigen müssen“, das ist die Rolle, die Kubernetes spielt. Kubernetes ist eine portable, erweiterbare und skalierbare Open-Source-Containercluster-Management-Lösung. K8s automatisiert die Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen vollständig. Es synchronisiert die Computer-, Netzwerk- und Speicherinfrastruktur entsprechend den Workloads der Benutzer.

Kubernetes nutzt die Einfachheit von Platform-as-a-Service (PaaS) bei der Nutzung in der Cloud. Es nutzt die Flexibilität von Infrastructure-as-a-Service (IaaS) und ermöglicht Portabilität und vereinfachte Skalierung; es ermöglicht Infrastrukturanbietern die Bereitstellung robuster Software-as-a-Service (SaaS)-Geschäftsmodelle.

Kubernetes im Kontext von IaaS - SaaS - PaaS

Kubernetes ist ein großes, schnell wachsendes Ökosystem und dessen Dienstleistungen, Support und Tools sind gut etabliert. Kubernetes ist nicht nur ein Orchestrierungssystem, es macht eine Orchestrierung überflüssig.

Kubernetes verwaltet mehrere Container, wobei jeder Container oder sein Image klein und schnell ist. Eine Anwendung oder eine Dienstleistung kann in einem Container oder dessen Image untergebracht sein. Diese 1:1-Beziehung ermöglicht es, die Vorteile von Containern voll auszuschöpfen. Feste Container-Images können eher zur Build/Releasezeit als zur Deployment-Zeit erstellt werden, da jede Anwendung nicht innerhalb des restlichen Anwendungsstapels koordiniert werden muss und nicht über die Produktionsinfrastrukturumgebung gekoppelt ist.

Die Erstellung von Container Images zum Zeitpunkt der Produktion oder Freigabe wiederum sorgt für eine kontinuierliche Umgebung von der Entwicklung bis zur Produktion.

Jeder Container enthält den gesamten Quellcode und alle Abhängigkeiten eines Dienstes, wenn die Nachfrage nach dem Dienst steigt, kann die Anzahl der Container erhöht werden. Ohne Container müssten riesige Mengen an Rechenleistung permanent verfügbar gehalten werden, um Videoinhalte an die prognostizierte Anzahl von Nutzern zu streamen. Bei Containern kann die verfügbare Rechenleistung optimal genutzt werden, indem bei Bedarf weitere Container gestartet oder gestoppt werden. Dazu sucht Kubernetes nach einem Webserver, der noch Kapazität hat, dupliziert dort den gewünschten Dienst und gibt diesen nach Abschluss der Aufgabe automatisch frei. Selbst wenn ein Webserver ausfällt, werden aktive Container automatisch auf andere Webserver im Rechenzentrum verschoben.

Kubernetes ist ein international anerkannter Standard und viele Containerunternehmen setzen auf diese Technologie. Die größte Herausforderung bei der Anwendung von Kubernetes ist die Komplexität der Erstellung, des Betriebs und der Aktualisierung eines Kubernetes-Clusters. Die verschiedenen Komponenten, die die Flexibilität und Benutzerfreundlichkeit von Kubernetes bieten, müssen so verwaltet werden, dass sie hochverfügbar und skalierbar sind.

Google

Wie hat sich das Projekt entwickelt?

Kubernetes ist die Idee von Google. Googles Erfahrung mit der Ausführung großer Produktionsworkloads, gepaart mit den besten Ideen, Praktiken und Tools in der Entwickler-Community, veranlasste die Programmierer von Google, das Borg-Projekt im Jahr 2012 zu gründen. Der Name stammt aus der Science-Fiction-Serie Star Trek und bezeichnet ein fiktives Volk ohne hierarchische Struktur. Kubernetes ist aus dem Google Borg-Projekt hervorgegangen, das ebenfalls auf der Linux-Containertechnologie basiert.

Borg verschaffte Google einen entscheidenden Wettbewerbsvorteil, der es Google ermöglichte, massive Infrastrukturlandschaften zu deutlich niedrigeren Kosten zu liefern. Es hat die Auslastung der Serverhardware um das Fünffache optimiert.

Das interne Borg-Projekt entwickelte sich dann zum Open-Source-Kubernetes. Auf dem Open-Source-Gipfel in Vancouver gab die Cloud Native Computing Foundation (CNCF) bekannt, dass Google die Cloud-Ressourcen für die Container-Orchestrierung von Kubernetes an die Foundation übertragen werde. Im Jahr 2014 wurde das Kubernetes-Projekt als Open-Source-Projekt zur Verfügung gestellt und ist seitdem als Open-Source-Software unter dem Dach der Cloud Native Computing Foundation verfügbar.

Flexibilität und Skalierbarkeit

Was macht Kubernetes so mächtig?

Dank der Flexibilität, die Container und ihre Orchestrierung mit Kubernetes ermöglichen, können Entwicklungsteams unabhängiger und agiler arbeiten. Neue Funktionen, Dienste und Fixes können schneller und ohne Ausfallzeiten eingeführt werden. Eine Cloud-Anwendung kann als ein Containerschiff betrachtet werden, das die Container und das Schiff bereitstellt. Kubernetes sorgt dafür, dass Container zur richtigen Zeit an die richtige Stelle transportiert werden.

Vor der Containerisierung wurden Anwendungen bereitgestellt, indem sie auf einem Host installiert wurden. Dies hatte den Nachteil, dass die ausführbaren Dateien, Konfigurationen, Bibliotheken und Lebenszyklen der Anwendungen miteinander und mit dem Host-Betriebssystem vernetzt waren. Während es möglich war, unveränderliche VM-Images zu erzeugen, um vorhersehbare Rollouts und Rollbacks zu ermöglichen, lieferten VMs eine Abstraktion einer Maschine, sie sind an ihren Server gebunden und mit einem Betriebssystem (OS) eingerichtet und daher nicht leicht zu transportieren.

Container bieten eine Abstraktion auf Betriebssystemebene, die eine Ebene über der Hardwarevirtualisierung liegt. Jeder Container ist von anderen und von der Host-Maschine eingekapselt. Sie sind einfacher zu entwickeln als VMs, da sie von der zugrunde liegenden Infrastruktur und dem Host-Dateisystem getrennt sind. Sie sind dauerhaft plattformunabhängig und über Clouds und Betriebssystemverteilungen hinweg portierbar.

oneclick™ nutzt Kubernetes

Obwohl Kubernetes selbst bereits eine Menge Funktionalität bietet können insbesondere anwendungsspezifische Workflows angepasst werden, um die Entwicklung zu beschleunigen. Kubernetes fungiert somit auch als Plattform für den Aufbau eines Ökosystems und von Werkzeugen. Wir haben uns bei oneclick™ dafür entschieden, Kubernetes als Grundlage für unsere Plattform zu verwenden.

Neben den oben beschriebenen Vorteilen verfügt Kubernetes auch über weitere hervorragende Konstruktionsmerkmale:

  • Health Check und Selbstreparatur: Fehlerhafte Container werden automatisch wieder geöffnet. Fällt ein ganzer Node aus, werden die Container darin neu verteilt und wenn Container nicht auf einen „Health Check“ reagieren, startet Kubernetes sie automatisch neu. Darüber hinaus bietet die Open-Source-Containercluster-Verwaltung automatische Platzierung und automatische Replikation.
  • Service, Erkennung und Lastausgleich: Kubernetes weist Containern mit einer einzigen IP-Adresse einen einzigen DNS-Namen für Container-Gruppen zu und kann unter dieser Identität einen Lastausgleich durchführen.
  • Pods: Ein Pod ist eine Sammlung von einem oder mehreren Containern, die in den jeweiligen Nodes verwendet werden. Alle Container im Pod teilen sich die IP-Adresse, den IPC, den Hostnamen und zusätzliche Ressourcen – wie z.B. Shared Storage. Darüber hinaus führt jeder Pod mindestens ein Kubelet und ein Container Runtime aus.
  • Kubelet: Das Kubelet ist ein Agent des Masters. Dieses wird auf jedem Node ausgeführt und ist für die Verbindung zwischen Master und Node verantwortlich.

Funktionsweise von Kubernetes

So funktioniert Kubernetes

Die Systemarchitektur von Kubernetes ist elegant im Design. Kubernetes orchestriert alle Aspekte des Containermanagements und automatisiert alle notwendigen Prozesse: Einrichtung, Betrieb und Skalierung (up/down). Die Container können über ausgewählte Maschinen (physische und virtualisierte Computer) orchestriert werden, die dann ständig überwacht werden, um sicherzustellen, dass sie ihren individuellen Anforderungen entsprechen.

Instanzen werden entsprechend den Anforderungen an den Lastausgleich bereitgestellt, und wenn sie ausfallen oder abstürzen, lädt Kubernetes sie neu. Selbst wenn ein kompletter Arbeitsprozess ausfällt oder nicht reagiert, wird Kubernetes ihn von einem neuen Node aus neu orchestrieren.

Die Master-Slave-Architektur, die Kubernetes zugrunde liegt, ermöglicht es der Master-Komponente, die Nodes zuzuweisen, auf denen die Container laufen. Die Architektur umfasst:

  • Der Kubernet Master – das zentrale Steuerungselement, das die Container auf die Nodes verteilt und verwaltet, wobei eine hohe Verfügbarkeit durch die Verteilung der Container auf verschiedene Master erreicht werden kann.
  • Nodes – eine VM oder ein physischer Webserver. Die Nodes steuern die Pods.
  • Pods sind die kleinste einsetzbare Einheit und enthalten einen oder mehrere Container, die sich die zugewiesenen Ressourcen teilen.
  • Der Etcd speichert die Konfigurationen des Kubernet-Clusters über den API-Webserver.
  • Der API-Webserver liefert alle wichtigen Informationen für den Etcd und interagiert über REST-API-Schnittstellen, z.B. mit den Diensten des Kubernetes-Clusters.
  • Der Kube-Scheduler überwacht und verwaltet die Auslastung der Nodes, indem er mit Hilfe der Systemressourcen bestimmt, welcher Node einen Pod als eigenständige Komponente startet.
  • Controller: Der Controller enthält alle Kontrollmechanismen und ist eine weitere wichtige Komponente zur Überwachung. Er interagiert mit dem API-Webserver, um alle Stati zu lesen und zu schreiben.

Kubernetes und die Cloud

Kubernetes und Cloud

Dank Kubernetes können Unternehmen containerbasierte Anwendungen auf allen wichtigen Cloud-Plattformen nutzen. Marktbeherrschend im globalen Cloud-Markt sind Amazon Webservices (AWS), die Google Cloud Platform (GCP) und Microsoft Azure.

Sind Sie daran interessiert, mehr zu erfahren?

Wenn Sie darüber nachdenken, wie die Containerisierung Ihr Servicemodell verbessern kann, ist oneclick™ da, um Ihnen zu helfen. Kontaktieren Sie uns, um mehr über den Einsatz von Containern in der Cloud zu erfahren, und um Ihren Kunden ein wirklich globales und latenzfreies Erlebnis Ihrer Services zu bieten.

Wenn Sie mehr über die verwalteten Container erfahren möchten, lesen Sie weiter für eine Einführung in Docker.

Weitere Informationen finden Sie in den folgenden Quellen: