Was ist Kubernetes Ingress?

Autor

Ravi Saraswathi

IBM Chief Architect

IBM Blog

Kubernetes Ingress definiert

Kubernetes Ingress ist ein API-Objekt, das Routing-Regeln zur Verwaltung des Zugriffs externer Benutzer auf die Services in einem Kubernetes-Cluster bereitstellt.

In diesem Artikel erfahren Sie, wie und warum Sie eine Anwendung außerhalb Ihres Kubernetes-Clusters zugänglich machen müssen, welche verschiedenen Optionen zur Verfügung stehen und in welchen Situationen Kubernetes Ingress am nützlichsten ist. Dieser Blog setzt voraus, dass Sie über ein grundlegendes Verständnis von Kubernetes verfügen. Wenn Sie jedoch weitere Hintergrundinformationen benötigen, sehen Sie sich die folgenden Ressourcen an:

Optionen für die Freigabe von in Kubernetes bereitgestellten Anwendungen

Es gibt mehrere Möglichkeiten, Ihre Anwendung außerhalb Ihres Kubernetes-Clusters verfügbar zu machen, und Sie sollten je nach Anwendungsfall die geeignete auswählen. 

Die vier Hauptoptionen, die wir in diesem Beitrag vergleichen werden, sind: ClusterIP, NodePort, LoadBalancer und Ingress. Jede bietet eine Möglichkeit, Dienste verfügbar zu machen, und ist in verschiedenen Situationen nützlich. Ein Dienst ist im Wesentlichen ein Frontend für Ihre Anwendung, das den Datenverkehr automatisch und gleichmäßig verteilt an verfügbare Pods umleitet. Mit Diensten kann eine auf einer Reihe von Pods ausgeführte Anwendung als Netzwerkdienst verfügbar gemacht werden. Pods sind unveränderlich. Das heißt, wenn sie ausgeschaltet werden, können sie nicht wiederbelebt werden. Der Cluster erstellt neue Pods im selben Knoten oder in einem neuen Knoten, sobald ein Pod ausfällt. 

Ähnlich wie Pod und Bereitstellung sind Dienste Ressourcen in Kubernetes. Ein Dienst bietet einen einzigen Zugriffspunkt von außerhalb des Kubernetes-Clusters und ermöglicht Ihnen den dynamischen Zugriff auf eine Gruppe von Replika-Pods. 

Für den internen Anwendungszugriff innerhalb eines Kubernetes-Clusters ist ClusterIP die bevorzugte Methode. Es ist eine Standardeinstellung in Kubernetes und verwendet eine interne IP-Adresse, um auf den Service zuzugreifen.

Um einen Service externen Netzwerkanfragen zugänglich zu machen, sind NodePort, LoadBalancer und Ingress mögliche Optionen. Wir werden uns zunächst Ingress ansehen und die Dienste später im Artikel vergleichen.

Die neuesten Tech-News – von Experten bestätigt

Bleiben Sie mit dem Think-Newsletter über die wichtigsten – und faszinierendsten – Branchentrends in den Bereichen KI, Automatisierung, Daten und mehr auf dem Laufenden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.

Vielen Dank! Sie haben sich angemeldet.

Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.

Was ist Kubernetes Ingress und wofür ist es nützlich?

Kubernetes Ingress ist ein API-Objekt, das Routing-Regeln zur Verwaltung des Zugriffs externer Benutzer auf die Services in einem Kubernetes Cluster bereitstellt, in der Regel über HTTPS/HTTP. Mit Ingress können Sie ganz einfach Regeln für das Routing des Datenverkehrs einrichten, ohne mehrere Load Balancer erstellen oder jeden Service auf dem Knoten offenlegen zu müssen. Dies macht es zur besten Option für den Einsatz in Produktionsumgebungen. 

In Produktionsumgebungen benötigen Sie in der Regel inhaltsbasiertes Routing, die Unterstützung mehrerer Protokolle sowie Authentifizierung. Ingress ermöglicht es Ihnen, diese Funktionen innerhalb des Clusters zu konfigurieren und zu verwalten.

Ingress besteht aus einem Ingress-API-Objekt und dem Ingress-Controller. Wie bereits erwähnt, ist Kubernetes Ingress ein API-Objekt, das den gewünschten Zustand für die Offenlegung von Diensten außerhalb des Kubernetes-Clusters beschreibt. Ein Ingress-Controller ist unerlässlich, da er die eigentliche Implementierung der Ingress-API darstellt. Ein Ingress-Controller liest und verarbeitet die Ingress-Ressourceninformationen und wird in der Regel als Pod innerhalb des Clusters ausgeführt.

Ein Ingress bietet Folgendes:

  • Extern erreichbare URLs für Anwendungen, die in Clustern bereitgestellt werden
  • Unterstützung für namensbasierte virtuelle Hosts und URI-basiertes Routing
  • Lastverteilungsregeln und Datenverkehr sowie SSL-Terminierung

Einen schnellen visuellen Überblick über Kubernetes Ingress finden Sie im folgenden Video:

Was ist der Ingress-Controller?

Wenn Kubernetes Ingress das API-Objekt ist, das Routing-Regeln zur Verwaltung des externen Zugriffs auf Services bereitstellt, ist Ingress Controller die eigentliche Implementierung der Ingress-API. Der Ingress-Controller dient in der Regel als Lastausgleichsfunktion für das Routing von externem Datenverkehr an Ihren Kubernetes-Cluster und ist für die L4-L7-Netzwerkservices zuständig. 

Layer 4 (L4) bezieht sich auf die Verbindungsebene des OSI-Netzwerk-Stack – externe Verbindungen, die nach einem Round-Robin-Verfahren auf die Pods verteilt werden. Layer 7 (L7) bezieht sich auf die Anwendungsebene des OSI-Stacks – externe Verbindungen, die basierend auf Anfragen auf die Pods lastverteilt sind. Layer 7 wird oft bevorzugt, aber Sie sollten einen Ingress-Controller auswählen, der Ihre Anforderungen an Lastverteilung und Routing erfüllt.

Der Ingress-Controller ist dafür verantwortlich, die Informationen der Ingress-Ressource zu lesen und diese Daten entsprechend zu verarbeiten. Nachfolgend ein Beispiel für eine Ingress-Ressource:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress 
spec:
  backend:
    serviceName:ServiceName
    servicePort:<Port Number>

Als Analogie gilt: Wenn Kubernetes-Ingress ein Computer ist, dann ist der Ingress-Controller ein Programmierer, der diesen Computer verwendet und entsprechende Maßnahmen ergreift. Darüber hinaus fungieren Ingress-Regeln als Manager, der den Programmierer anweist, die Arbeit mit dem Computer zu erledigen. Ingress-Regeln sind eine Reihe von Regeln für die Verarbeitung von eingehendem HTTP-Datenverkehr. Ein Ingress ohne Regeln sendet den gesamten Datenverkehr an einen einzelnen Standard-Backend-Dienst. 

Genauer betrachtet ist der Ingress-Controller eine Anwendung, die in einem Kubernetes-Cluster läuft und einen HTTP-Load-Balancer entsprechend den Ingress-Ressourcen konfiguriert. Bei der Lastverteilung kann es sich um eine Software-Lastverteilung im Cluster oder um eine extern ausgeführte Hardware- oder Cloud-Lastverteilung handeln. Unterschiedliche Lastausgleichsfunktionen erfordern unterschiedliche Implementierungen des Ingress-Controllers.

Auf dem Markt sind verschiedene Ingress-Controller verfügbar. Für die Verwaltung des Datenverkehrs und der Last in Ihrem Kubernetes-Cluster ist es wichtig, den richtigen auszuwählen.

IBM Cloud

Red Hat OpenShift AI on IBM Cloud: KI-Workloads bereitstellen

Nutzen Sie KI-Funktionen mit Red Hat OpenShift on IBM Cloud. In diesem Video erfahren Sie, wie Sie mit einer skalierbaren Plattform für maschinelles Lernen KI-Workloads effizient erstellen, bereitstellen und verwalten können.

Ingress vs. ClusterIP vs. NodePort vs. LoadBalancer

Ingress, ClusterIP, NodePort und LoadBalancer sind allesamt Möglichkeiten, externen Datenverkehr in Ihren Cluster zu leiten. Sie unterscheiden sich jeweils in ihrer Vorgehensweise. Sehen wir uns an, wie die einzelnen Funktionen funktionieren und wo Sie sie einsetzen können.

ClusterIP

ClusterIP ist die bevorzugte Option für den internen Servicezugriff. Dabei wird eine interne IP-Adresse verwendet, um auf den Service zuzugreifen. Einige Beispiele, bei denen ClusterIP die beste Option sein könnte, sind das Debuggen von Diensten während der Entwicklung und der Durchführung von Tests, der interne Datenverkehr sowie Dashboards.

ClusterIP ist die bevorzugte Option für den internen Servicezugriff. Dabei wird eine interne IP-Adresse verwendet, um auf den Service zuzugreifen. Einige Beispiele, bei denen ClusterIP die beste Option sein könnte, sind das Debuggen von Diensten während der Entwicklung und der Durchführung von Tests, der interne Datenverkehr sowie Dashboards.

NodePort

Ein NodePort ist eine virtuelle Maschine (VM), die dazu verwendet wird, einen Dienst auf einer statischen Portnummer verfügbar zu machen. Sie wird in erster Linie für die Bereitstellung von Diensten in einer Umgebung, die nicht für die Produktion verwendet wird, eingesetzt. Die Verwendung in der Produktion wird sogar nicht empfohlen. Ein NodePort wird beispielsweise verwendet, um einen einzelnen Dienst verfügbar zu machen, ohne dass Anforderungen an den Lastausgleich für mehrere Dienste bestehen.

Ein NodePort ist eine virtuelle Maschine (VM), die dazu verwendet wird, einen Dienst auf einer statischen Portnummer verfügbar zu machen. Es wird hauptsächlich für die Bereitstellung von Diensten in einer nicht für die Produktion verwendeten Umgebung verwendet.

Lastausgleichsfunktion

Diese Methode verwendet einen externen LoadBalancer, um Services im Internet verfügbar zu machen. Sie können LoadBalancer in einer Produktionsumgebung verwenden, aber Ingress wird oft bevorzugt.

Diese Methode verwendet einen externen LoadBalancer, um Services im Internet verfügbar zu machen. Sie können LoadBalancer in einer Produktionsumgebung verwenden, aber Ingress wird oft bevorzugt.

Ingress

Mit Ingress können Sie die Regeln für das Traffic-Routing in einer einzigen Ressource konsolidieren und als Teil eines Kubernetes-Clusters ausführen. Einige der Gründe, warum Kubernetes Ingress die bevorzugte Option für die Bereitstellung eines Dienstes in einer Produktionsumgebung ist, sind unter anderem folgende:

  • Das Traffic-Routing wird durch Regeln gesteuert, die in der Ingress-Ressource festgelegt sind.
  • Ingress ist Teil des Kubernetes-Clusters und wird als Pods ausgeführt.
  • Ein externer Load Balancer ist teuer und Sie müssen ihn außerhalb des Kubernetes-Clusters verwalten. Kubernetes Ingress wird innerhalb des Clusters verwaltet.
Mit Ingress können Sie die Regeln für das Traffic-Routing in einer einzigen Ressource konsolidieren und als Teil eines Kubernetes-Clusters ausführen.

In Produktionsumgebungen verwenden Sie normalerweise Ingress, um Anwendungen im Internet verfügbar zu machen. Der Zugriff auf eine Anwendung erfolgt aus dem Internet über Port 80 (HTTP) oder Port 443 (HTTPS). Ingress ist ein Objekt, das den Zugriff auf Ihre Kubernetes-Services von außerhalb des Clusters ermöglicht. 

Zusammenfassung

Mit der Kubernetes Ingress-API können Sie Ihre Anwendungen, die in einem Cluster bereitgestellt werden, mit Routing-Regeln in einer einzigen Quelle dem Internet zur Verfügung stellen. Um Ingress zu implementieren, müssen Sie einen Ingress-Controller in Ihrem Cluster konfigurieren. Er ist für die Verarbeitung von Ingress-Ressourceninformationen und die Zulassung von Datenverkehr auf der Grundlage der Ingress-Regeln verantwortlich. Es ist wichtig, den richtigen Dienst mit einer geeigneten Konfiguration auszuwählen, damit Ihre Anwendung auf der Grundlage der oben aufgeführten Richtlinien dem Internet zur Verfügung steht. 

Weiterführende Lösungen
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud ist eine vollständig verwaltete OpenShift Container Platform (OCP).

Red Hat OpenShift erkunden
Container-Lösungen

Container-Lösungen führen Container-Workload aus und skalieren sie mit Sicherheit, Open-Source-Innovation und schneller Bereitstellung.

Container erkunden
Cloud-Beratungsleistungen 

Schalten Sie mit IBM Cloud Consulting Services neue Funktionen frei und steigern Sie die geschäftliche Agilität. Entdecken Sie, wie Sie mit Hybrid-Cloud-Strategien und Expertenpartnerschaften gemeinsam Lösungen entwickeln, die digitale Transformation beschleunigen und die Leistung optimieren können.

Cloud-Services
Machen Sie den nächsten Schritt

Machen Sie erste Schritte mit einer vollständig verwalteten Red Hat OpenShift-Plattform oder erkunden Sie die Flexibilität des IBM Cloud Kubernetes Ökosystems. Beschleunigen Sie Ihren Entwicklungs- und Bereitstellungsprozess mit skalierbaren, sicheren Lösungen, die auf Ihre Bedürfnisse zugeschnitten sind.

Red Hat OpenShift erkunden Kubernetes kennenlernen