Wie lässt sich Kubernetes in Ihre bestehende Architektur einbetten?

,

Der  Begriff „Kubernetes-Cluster“ klingt wie eine Art geschlossene Einheit. Für jemanden, der die IT-Architektur aus der Business-Perspektive betrachtet, wirft er vielleicht eine Reihe von Fragen auf. Eine davon ist, wie man Kubernetes in die bestehende Architektur einbettet? Würde es bedeuten, alles in Kubernetes-Cluster verschieben zu müssen? Oder wie verknüpft man bestehende Frontend-Anwendungen und Datenbanken?

Die Cluster Müssen Sprechen Lernen

In der Tat würde ein kompletter Umzug große Ausgaben bedeuten, zumal dafür viel Aufwand von Ihren besten Entwicklern erforderlich ist. Meistens möchten Unternehmen lieber klein anfangen und Kubernetes an einer kleinen Anzahl von Anwendungen ausprobieren, bevor sie diese Technologie in den Entwicklungslebenszyklus vollständig integrieren. 

Es ist richtig, dass die einzelnen Elemente innerhalb eines Kubernetes-Clusters nur untereinander kommunizieren. Man kann sie aber mit verschiedenen Methoden in den externen Netzwerkverkehr einbinden.

Ursprünglich bot Kubernetes drei solcher Methoden an. Sie waren nicht nur dazu gedacht, eine Verbindung zur Außenwelt herzustellen. Standardmäßig erhält jeder bereitgestellte Container eine IP-Adresse. Aber während Ihre Entwickler an einer Anwendung mit bestimmten Containern arbeiten, können sich die IPs ändern. Kubernetes hat dieses Problem gelöst, indem es die Möglichkeit bietet, einer Konstellation von Pods, in der Kubernetes-Sprache Service genannt, feste Namen zuzuweisen. 

Alle Methoden basieren auf dem Aufruf des Dienstes über seinen Namen. Es sind drei Arten des Dienstes bekannt, die sich für die Exposure-Aufgabe eignen:

  • ClusterIP
  • NodePort
  • LoadBalancer

ClusterIP bedeutet, dass das Cluster eine virtuelle Cluster-IP-Adresse erhält. Sie kann nur verwendet werden, um Pods innerhalb eines Clusters miteinander kommunizieren zu lassen. ClusterIP ist eher als Grundlage für den Diensttyp NodePort wichtig. Dieser richtet für jeden Knoten einen Port ein und verwendet ClusterIP, um externen Verkehr von der Clusterebene zu einem einzelnen Pod umzuleiten. Seiner Natur nach ist ein NodePort eine zusätzliche virtuelle Maschine, die innerhalb desselben Clusters läuft.

LoadBalancer ist die cleverste Methode unter den ursprünglichen drei. Sie wird in Cloud-Umgebungen eingesetzt, in denen die Verteilung der Client-Anfragen schnell und ressourceneffizient erfolgen muss. Bei diesem Schema schalten Sie einen LoadBalancer zwischen NodePort und Ihren Kubernetes-Cluster. Ein Load Balancer kann eine beliebige externe Software sein, die den Netzwerkverkehr zwischen den Servern basierend auf deren Verfügbarkeit ausgleicht.

Ingress-Controller und Kubernetes-Ingress

Wie Sie sehen können, verwenden die drei vorherigen Optionen IP-Adressen, um einen Zugangspunkt festzulegen. Dies ist recht instabil und kann bei kleineren Unternehmen zur Erschöpfung des externen IP-Pools führen. Außerdem erhöht die Load-Balancer-Methode die Cloud-Kosten.

Als Lösung für dieses Problem haben sich Ingress-Controller herauskristallisiert. Sie leiten eingehende HTTP- oder HTTPS-Anfragen innerhalb des Clusters um. Sie sind Pods und laufen als Teil des Clusters, obwohl sie eine Abstraktionsschicht zu den Diensten hinzufügen. Sie kommen über NodePort oder LoadBalancer. Der größte Vorteil der Ingress-Controller ist, dass sie einen Einstiegspunkt für alle externen Anfragen bieten, während man dafür mehrere NodePorts und LoadBalancer anlegen müsste.

Eine ganze Reihe von Anbietern sind mit ihren Produkten angetreten, um die Nische zu füllen (siehe die Liste im Anhang der offiziellen Kubernetes-Dokumentation).

Nun sind wir an der Spitze des Eisbergs angekommen. Sie können einen der Ingress-Controller allein verwenden, oder Sie können ein Ingress-Manifest erstellen, eine Anweisung für den ausgewählten Controller. Darin wird im Detail festgelegt, wie der Controller den Verkehr von externen Clients umleiten soll. 

Kubernetes Ingress ist also ein API-Objekt mit HTTP-Regeln, welches den Internetverkehr zu mehreren Diensten innerhalb eines Kubernetes-Clusters umleitet und es Ihnen ermöglicht, Ihre mit Kubernetes bereitgestellten Anwendungen mit zusätzlichen externen Diensten zu verbinden.

Fazit

Die Einführung von Kubernetes in Ihrem Unternehmen sollte sorgfältig geplant werden. Eine chaotische Implementierung kann zu einer zusätzlichen Belastung für Ihre Entwickler führen, die dann wertvolle Zeit für die Behebung von Problemen verlieren, anstatt an ihren Projekten zu arbeiten. 

Viele Unternehmen stellen am Ende weitere Entwickler ein, um die Lücken zu füllen. Die beste Lösung ist jedoch die Einstellung eines Kubernetes-Spezialisten, der sich mit den technischen Hürden auseinandersetzt und bei der Planung der Kubernetes-Implementierung hilft. Wenden Sie sich an JCFINCH, um sich über die Verfügbarkeit solcher Spezialisten zu informieren.