Serverlose Container auf K8s Fünf Schritte zur effizienten Ausführung von Kubernetes

Ein Gastbeitrag von Thomas Boele* 6 min Lesedauer

Anbieter zum Thema

Serverlose Container sind eine bemerkenswerte Entwicklung der traditionellen Container-Idee. Da herkömmliche Container ständig aktiv sind, können sie zu Ressourcen-Verschwendung führen. Serverlose Container hingegen sind kurzlebig und werden nach Bedarf betrieben. Für Entwickler bedeutet dies, dass sie weniger Zeit für die Server-Verwaltung benötigen und sich auf die Programmierung konzentrieren können.

Herkömmliche Container sind ständig aktiv. Serverlose Container werden nach Bedarf betrieben.(Bild:  Dall-E / KI-generiert)
Herkömmliche Container sind ständig aktiv. Serverlose Container werden nach Bedarf betrieben.
(Bild: Dall-E / KI-generiert)

Kubernetes“, oder „K8s“, zeichnet sich durch die Automatisierung, Skalierung und Verwaltung dieser Container-Anwendungen aus. Es wandelt Gruppen von Containern in verwaltbare, logische Einheiten um, verbessert die Anwendungsverfügbarkeit, erleichtert eine reibungslose Skalierung, gleicht den Netzwerkverkehr aus und gewährleistet die Selbstreparatur durch Ersetzen ausgefallener Container. Diese Funktionen machen Kubernetes zu einem unverzichtbaren Werkzeug im modernen Cloud Computing.

Serverlose Container sind temporär und werden nach Bedarf betrieben. Ein Report von 2023 unterstreicht diesen Trend: 46 Prozent der Container-Organisationen nutzen heute serverlose Container, vor zwei Jahren waren es noch 31 Prozent. Wie können also serverlose Container über Kubernetes ausgeführt werden?

Die Vorteile von Kubernetes und serverlosem Computing.(Bild:  Check Point Software Technologies Inc.)
Die Vorteile von Kubernetes und serverlosem Computing.
(Bild: Check Point Software Technologies Inc.)

Schritt 1: Einrichten der Kubernetes-Umgebung

Der erste wichtige Schritt, um sicherzustellen, dass die serverlosen Container effizient und sicher funktionieren, ist die Einrichtung der Kubernetes-Umgebung. Folgende Aspekte sind dabei zu beachten:

  • Netzwerk-Richtlinien: Implementierung von Netzwerkrichtlinien zur Kontrolle der Kommunikation zwischen serverlosen Containern. Dieser Schritt ist entscheidend für die Aufrechterhaltung einer sicheren und effizienten Netzwerkumgebung.
  • Bewährte Sicherheitspraktiken: Anwendung bewährter Sicherheitspraktiken wie die rollenbasierte Zugriffskontrolle (RBAC) zur Verwaltung von Berechtigungen. Die Container müssen mit den geringstmöglichen Rechten laufen, um die Angriffsfläche zu verringern.
  • Ingress- und Egress-Regeln: Die richtige Konfiguration von Ingress- und Egress-Regeln regelt, wie der Datenverkehr zu und von den serverlosen Containern geleitet wird.

Bei der Verwaltung von Kubernetes-Clustern kann die effektive Nutzung von Tools und Dashboards das Anwendererlebnis erheblich verbessern. Den Anfang macht das Kubernetes-Dashboard, eine benutzerfreundliche Oberfläche, die einen visuellen Überblick des Clusters bietet. Es vereinfacht die Überwachung und Fehlerbehebung und macht das Cluster-Management leichter zugänglich.

Die Integration von Automatisierungstools wie „Helm“ ist ebenfalls von Vorteil. Helm ist bekannt für seine Paketverwaltungsfunktionen und hilft bei der Definition, Installation und Aktualisierung komplexer Kubernetes-Anwendungen durch Diagramme, sogenannte „Helm-Charts“.

Für Leistungsanalysen sollten Überwachungstools wie „Prometheus“ und „Grafana“ eingerichtet werden. Diese Tools sind entscheidend, um die Leistung von serverlosen Containern zu überwachen und die allgemeine Gesundheit der Kubernetes-Umgebung aufrechtzuerhalten.

Umfrage zur Verwendung verschiedener Umgebungen.(Bild:  Check Point Software Technologies Inc.)
Umfrage zur Verwendung verschiedener Umgebungen.
(Bild: Check Point Software Technologies Inc.)

Schritt 2: Implementierung eines serverlosen Frameworks

Nachdem die Kubernetes-Umgebung eingerichtet worden ist, besteht der nächste Schritt in der Implementierung eines serverlosen Frameworks. Serverlose Frameworks spielen eine entscheidende Rolle bei der Vereinfachung der Verwaltung und Bereitstellung von serverlosen Containern innerhalb von Kubernetes. Sie bieten Abstraktionsebenen, die einen Großteil der zugrunde liegenden Infrastrukturverwaltung übernehmen, sodass sich der Benutzer auf das Erstellen und Bereitstellen seiner Anwendungen konzentrieren kann.

Serverlose Frameworks automatisieren viele Aspekte der Bereitstellung, zum Beispiel die Bereitstellung von Ressourcen und die Skalierung auf Grundlage der Arbeitslastanforderungen. Sie stellen sicher, dass die Ressourcen optimal genutzt werden, indem sie je nach Bedarf nach oben oder unten skaliert werden (Pay-per-Use-Prinzip).

Diese Frameworks nutzen die Funktionen von Kubernetes für die Container-Orchestrierung und bieten eine nahtlose und kohärente Umgebung für die Ausführung serverloser Anwendungen.

Aufbau von Container- und Kubernetes-Umgebungen.(Bild:  Check Point Software Technologies Inc.)
Aufbau von Container- und Kubernetes-Umgebungen.
(Bild: Check Point Software Technologies Inc.)

Auch hier hat man eine weitreichende Auswahl:

  • Kubeless: Kubeless zeichnet sich durch seinen Kubernetes-nativen Ansatz aus und bietet ein unkompliziertes und einfach zu verwendendes Framework. Es ahmt das AWS-Lambda-Modell nach, sodass es denjenigen vertraut ist, die an die AWS-Umgebung gewöhnt sind. Es lässt sich direkt in die Kubernetes-API integrieren und gewährleistet so einen reibungslosen Arbeitsablauf.
  • Knative: Knative zeichnet sich durch seinen vielfältigen Funktionsumfang aus, der das Erstellen, Bereitstellen und Verwalten von Anwendungen umfasst. Es bietet fortschrittliche Funktionen, darunter Autoscaling, einschließlich Scale-to-Zero, was für serverlose Anwendungen unerlässlich ist. Knative arbeitet nahtlos mit bestehenden Kubernetes-Ressourcen zusammen, was es zu einer leistungsstarken Wahl für komplexe Anwendungen macht.
  • OpenFaaS: OpenFaaS (Function-as-a-Service) zeichnet sich durch seine Einfachheit und Benutzerfreundlichkeit sowie durch die starke Unterstützung der Community aus. Es bietet eine unkomplizierte Möglichkeit, jeden Code in eine skalierbare, serverlose Bereitstellung zu verwandeln. OpenFaaS lässt sich gut in Kubernetes integrieren und bietet einen einfachen Zugang für alle, die in serverlose Anwendungen oder Kubernetes einsteigen.

Schritt 3: Bereitstellen von Containern in Kubernetes

Das Herzstück der Kubernetes-Bereitstellung ist eine YAML-Datei (Yet Another Markup Language / YAML Ain’t Markup Language), die definiert, wie die Anwendung im Cluster ausgeführt werden soll. Bei serverlosen Containern werden hier das Container-Image, die Anzahl der Replikate und andere Konfigurationsdetails angegeben.

Dabei sollte jede serverlose Funktion oder jeder Dienst definiert werden, einschließlich des Pfads und des Container-Images, das verwendet werden soll. Diese Definitionen sollten klar und präzise sein, um einen reibungslosen Einsatz und Betrieb zu gewährleisten.

Übersicht zu Preisen und Anbietern verschiedener Container-Strukturen.(Bild:  Check Point Software Technologies Inc.)
Übersicht zu Preisen und Anbietern verschiedener Container-Strukturen.
(Bild: Check Point Software Technologies Inc.)

In diesem Manifest für die Bereitstellung müssen für jeden Container Ressourcenanforderungen und -grenzen definiert werden. Anforderungen garantieren, dass eine bestimmte Menge an CPU-Kapazität und Arbeitsspeicher für den Container reserviert wird, während Begrenzungen sicherstellen, dass ein Container eine bestimmte Ressourcen-Quote nicht überschreitet.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Diese Einstellungen sollten sorgfältig abgewogen werden, um Leistung und Kosten zu optimieren. Zu wenig Ressourcen können zu einer schlechten Leistung führen, während eine zu hohe Einstellung unnötige Kosten verursachen kann.

Daneben bestimmen Readiness-Tests, wann ein Container bereit ist, Daten anzunehmen. Eine fehlgeschlagene Readiness-Probe entfernt den Pod von den Service-Endpunkten und stellt sicher, dass keine Daten an Container gesendet werden, die nicht bereit sind.

Mithilfe von Liveness-Tests kann Kubernetes feststellen, ob ein Container aktiv oder tot ist. Wenn ein Container nicht reagiert, kann Kubernetes ihn automatisch neu starten und so eine hohe Verfügbarkeit und Zuverlässigkeit gewährleisten.

Diese Sonden werden in den Bereitstellungsmanifesten konfiguriert. Dafür können http-Anfragen, TCP Socket Checks oder benutzerdefinierte Befehle verwendet werden, je nach den Anforderungen der Anwendung.

Schritt 4: Automatisierung von Bereitstellung und Skalierung

Die Automatisierung der Bereitstellung und Skalierung ist ein Eckpfeiler der effizienten und stabilen serverlosen Container-Verwaltung auf Kubernetes. Durch die Nutzung der nativen Funktionen von Kubernetes und die Integration von CI/CD-Pipelines kann eine hochdynamische und reaktionsfähige serverlose Umgebung geschaffen werden.

ReplicaSets in Kubernetes stellen sicher, dass eine bestimmte Anzahl von Pod-Replikaten zu einem bestimmten Zeitpunkt ausgeführt wird. Sie sind entscheidend für die Aufrechterhaltung des gewünschten Zustands und der Verfügbarkeit von Anwendungen.

HPA (Horizontal Pod Autoscaler) passt die Anzahl der Pod-Replikate automatisch auf der Grundlage der beobachteten CPU-Auslastung oder anderer ausgewählter Metriken an. Diese Funktion ist für serverlose Umgebungen unerlässlich, in denen die Arbeitslast stark schwanken kann, sodass das System effizient nach oben oder unten skaliert werden kann.

Kubernetes-Komponenten.(Bild:  Check Point Software Technologies Inc.)
Kubernetes-Komponenten.
(Bild: Check Point Software Technologies Inc.)

Die Automatisierung der Bereitstellung und Skalierung in Kubernetes rationalisiert nicht nur den Betrieb, sondern stellt auch sicher, dass die serverlosen Container immer optimal laufen und sich in Echtzeit an Schwankungen der Arbeitslast anpassen. Mit Tools wie HPA, CI/CD-Pipelines, ereignisgesteuerter Skalierung und CloudGuard CNAPP+P (Cloud Native Application Protection Platform + Prevention) entsteht somit eine robuste, sichere und hocheffiziente serverlose Umgebung, die den dynamischen Anforderungen moderner Cloud-nativer Anwendungen gerecht wird.

Schritt 5: Überwachung und Verwaltung von serverlosen Containern

Der letzte und fortlaufende Schritt bei der Verwaltung von serverlosen Containern auf Kubernetes beinhaltet eine aufmerksame Überwachung und eine effektive Verwaltung. In einer serverlosen Umgebung, in der Ressourcen dynamisch skaliert und angepasst werden, ist es entscheidend, einen Überblick zur Leistung und dem Zustand der Anwendungen zu erhalten. Zu diesem Zweck sollten Überwachungstools wie Prometheus und Grafana eingerichtet werden, die es dem Benutzer ermöglichen, schnell auf Änderungen oder Probleme zu reagieren.

Zu den wichtigen Metriken gehören Container-Startzeiten, Funktionsausführungszeiten, Ressourcen-Auslastung, Fehlerraten und Datenrate. Durch die Überwachung dieser Metriken kann sichergestellt werden, dass die serverlosen Container optimal funktionieren. Eine effektive Überwachung ermöglicht es, die Umgebung zu verwalten und mögliche Probleme zu erkennen, bevor sie sich auf die Dienste auswirken.

(ID:50253945)