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.