Kubernetes

Kubernetes-Service-Mesh

Kubernetes-Service-Mesh
Kubernetes hat viele Ressourcentypen, die Ihnen helfen, die Idee von Services oder Microservices zu abstrahieren. Wenn das Front-End Ihrer App beispielsweise mit dem Back-End interagieren möchte, muss es sich nicht darum kümmern, nach welchem ​​Pod es sucht, oder nicht einmal, welche IP-Adresse ein Back-End-Pod belegen soll. Pods werden über einen Dienst bereitgestellt. (Wenn Sie neu bei Kubernetes sind, empfehle ich diesen Beitrag, um besser zu verstehen, was Pods zusammen mit anderen wichtigen Konzepten sind.)

Im Wesentlichen stellt Kubernetes a Backend-Dienst intern innerhalb des Clusters und das Front-End interagiert mit diesem Dienst. Die Pods, die den Service anbieten, können sehr gut ausgetauscht werden und niemand würde etwas bemerken. Aber wenn die Funktionen in Ihren Anwendungen wachsen, wächst auch die Anzahl der Dienste, die Sie warten müssen. Jeder Dienst kann potenziell mit jedem anderen Dienst im Cluster kommunizieren, und das resultierende Netzwerk wird als . bezeichnet Service-Mesh.

Es gibt viele Add-ons für Kubernetes, die uns helfen, die Verwaltung dieses Service Mesh zu vereinfachen. Viele wichtige Funktionen wie TLS, automatisiertes Load Balancing, Sicherung von APIs auch im internen Netzwerk usw. werden von diesen Add-Ons angeboten offered. Viele Optionen wie Istio, Linkerd und Conduit können in Kubernetes integriert werden, um dies zu erreichen. Wir werden uns in diesem Beitrag mit Istio befassen, da es sich um Version 1 handelt.0 wurde kürzlich angekündigt.

Voraussetzungen

Um mit Istio zu beginnen, benötigen Sie einen funktionierenden Kubernetes-Cluster. Es gibt drei Möglichkeiten, das zu bekommen.

  1. Sie können Minikube installieren, um einen Single-Node-Cluster auf Ihrem lokalen Computer zu erstellen.
  2. Wenn Sie Docker unter Windows oder Mac verwenden, können Sie einen Kubernetes-Cluster mit einem einzelnen Knoten in den Docker-Einstellungen aktivieren.
  3. Oder Sie nutzen Online-Dienste wie den Katacoda-Spielplatz. Wir werden das verwenden.

Warum ein Service Mesh verwenden??

Die Installation eines Service Mesh wie Istio erleichtert die Arbeit mit Microservices. Während der Entwicklung müssen Sie sich keine Gedanken darüber machen, dass Ihr Microservice gegenseitiges TLS, Load Balancing oder andere Aspekte wie Service Discovery unterstützen muss. Ein ideales Service Mesh ermöglicht es Ihnen, Microservices zu verbinden, gegeneinander und nach außen abzusichern und organisiert zu verwalten. Es hilft sowohl den Entwicklern als auch den Betreibern ungemein.

Istio installieren

Für die Installation von Istio ist ein Kubernetes-Cluster erforderlich. Wenn Sie einen Single-Node-Cluster haben, wie Sie ihn mit Minikube oder Docker on Desktop erhalten, können alle Befehle auf Ihrem lokalen Node ausgeführt werden. Wenn Sie jedoch einen Multi-Node-Cluster wie den von Katacoda Playground verwenden, denken Sie daran, dass die meisten Befehle und Einrichtungsverfahren auf dem Master-Node ausgeführt werden. Ja, es betrifft den gesamten Cluster, aber wir müssen nur mit dem Master-Knoten interagieren.

Wir beginnen mit dem Klonen (oder Herunterladen) der neuesten Version von Istio von Github. Windows-Benutzer möchten möglicherweise diese Seite besuchen und das entsprechende erhalten .Postleitzahl Datei.

$ curl -L https://git.io/getLatestIstio | Sch -
$ CD istio-1.0.0

Der Name des Repos kann sich im Laufe der Zeit ändern, wenn eine neuere Version zum Zeitpunkt des Schreibens dieses Artikels veröffentlicht wird 1.0.0 ist die neueste stabile Version. Dieses Repo enthält nicht nur die Service-Mesh-Erweiterung, sondern auch eine Beispiel-App namens BookInfo zu Experimentierzwecken. Das Skript fügt auch das neue Verzeichnis $PWD/istio-1 hinzu.0.0/bin zu Ihrer PATH-Variablen.

Dieses Verzeichnis enthält istioctl Binärdatei, die verwendet werden kann, um mit dem Cluster zu interagieren. Windows-Benutzer können die Binärdatei einfach aufrufen, indem sie zum Ordner gehen istio-1.0.0\bin und rufen .\istioctl mit Powershell oder Eingabeaufforderung. Aber es ist ein optionales Add-On.

Wenn Sie einen Mac verwenden, können Sie dies mit dem folgenden Befehl tun:

$ export PATH=$PWD/bin:$PATH

Als nächstes müssen wir unsere Kubernetes-API um Custom Resource Definitions (CRDs) erweitern, die uns von istio zur Verfügung stellt.

$ kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml

Dies kann in wenigen Sekunden wirksam werden und sobald dies erledigt ist, werden in Ihren kube-apiserver Istio-Erweiterungen integriert. Von nun an variieren die Installationsoptionen, je nachdem, ob Sie dies für Produktionszwecke verwenden oder in Ihrer eigenen isolierten Umgebung damit experimentieren.

Wir gehen davon aus, dass letzteres der Fall ist und installieren istio ohne TLS-Authentifizierung.

$ kubectl apply -f install/kubernetes/istio-demo.yaml

Dadurch wird ein neues Namespace istio-System erstellt, in dem alle verschiedenen Komponenten wie istio-pilot und Ingress Gateway installiert werden.

Anwendungsbereitstellung und Istio Injector

Hier kommt der Nutzen von Istio. Istio fügt Ihren Diensten Sidecar-Proxys hinzu, ohne den eigentlichen Code Ihrer Anwendung zu ändern. Wenn automatischer istio-Sidecar-Injektor aktiviert ist. Sie können einen Namespace mit istio-injection=enabled kennzeichnen und wenn Ihre Anwendung in diesem Namespace bereitgestellt wird, verfügen die Pods selbst über spezialisierte Envoy-Container zusammen mit den Containern für die Kernanwendung. Benennen wir zum Beispiel den Standard-Namespace

$ kubectl label namespace default istio-injection=enabled

Lassen Sie uns nun die BookInfo-Beispielanwendung in diesem Namespace bereitstellen. Führen Sie im Stammverzeichnis des geklonten Isitio-Repräsentanten Folgendes aus:

$ kubectl apply -f Samples/bookinfo/platform/kube/bookinfo.yaml

Sie können alle Pods auflisten, die hier ausgeführt werden:

$ kubectl Pods erhalten

Wählen Sie einen beliebigen Pod aus und sehen Sie sich die Details an. Einer der Pods aus der BookInfo-App in meiner Bereitstellung heißt beispielsweise details-v1-6865b9b99d-6mxx9

$ kubectl describe pods/details-v1-6865b9b99d-6mxx9

In der Beschreibung werden Sie feststellen, dass der Pod zwei Container enthält, der erste ist Bestandteil der eigentlichen Ausführung der Bild-App-Beispiele-bookinfo-details-v1:1.8.0 und der zweite ist der istio-Proxy, der das Image ausführt gcr.io/istio-release/proxyv2:1.0.0 .

Istio bietet eine feinkörnige Kontrolle über Ihr Service Mesh, da diese Container genau in die Pods eingefügt werden, in denen sich Ihre Anwendungen befinden. Dies in Kombination mit einfach zu verwendendem TLS für die Kommunikation und feinkörnige Verkehrssteuerung ist einer der vielen Gründe, warum große Anwendungen von einem Service Mesh wie Istio profitieren können.

Verweise

Die eigentliche Architektur besteht aus vielen Komponenten wie Pilot, Citadel und Mixer, von denen jede ihre eigene wichtige Rolle zu erfüllen hat. Sie können hier viel mehr über diese Komponenten erfahren und versuchen, Ihren eigenen Microservice hier bereitzustellen.

Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...
Beste Befehlszeilenspiele für Linux
Die Befehlszeile ist nicht nur Ihr größter Verbündeter bei der Verwendung von Linux – sie kann auch eine Quelle der Unterhaltung sein, da Sie damit vi...
Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...