Kubernetes MatchLabels

Kubernetes MatchLabels
In diesem Beitrag werden wir meistens Labels, Matchlabels und Selektoren besprechen und wie sie in Pods, Diensten und Bereitstellungen verwendet werden. Sie werden wissen, wie Kubernetes Elemente wie Job, Bereitstellung, Replikate und Daemon -Set diese Ideen verwenden, sobald Sie sie verstanden haben. Beginnen wir also mit der Definition von Etiketten und MatchLabels.

Was sind Etiketten und MatchLabels??

Innerhalb von Kubernetes sind Etiketten ein mit einem Objekt verknüpfter Schlüssel-/Wert -formatiertes Stück Metadaten, die verknüpft sind. Zusätzliche Informationen über die für den Verbraucher oder Objekt relevante Sache werden über Etiketten bereitgestellt. Beispielsweise kann ein Etikett die Hardwarespezifikationen eines Knotens identifizieren oder ob eine Workload für Produktionstests bestimmt ist.

Etiketten dienen als implizite Gruppierungstechnik für ähnliche Objekte und bieten gleichzeitig einen Suchmechanismus für Benutzer, Controller und andere Systeme an.

Mit Beschriftungen können Benutzer ihre eigenen Organisationssysteme auf locker verbundene Systeme abbilden, ohne dass Kunden die Zuordnungen speichern müssen.

Mehrdimensionale Unternehmen wie Service-Bereitstellungen sowie Stapelverarbeitungspipelines sind häufig. Im Management sind häufig Übergangsaktionen erforderlich, was die Einkapselung von rigoros hierarchischen Darstellungen untergräbt, insbesondere unflexible Hierarchien, die von Infrastruktur und nicht von Benutzern diktiert werden.

MatchLabels sind eine Art von Schlüsselwertpaarkarte. Ein einzelnes Schlüsselwertpaar in der MatchLabels -Karte entspricht einem Element von MatchExpressions mit dem Schlüsselfeld „Schlüssel“, dem Operator „in“ und nur "Wert" im Wertearray. Eine Sammlung von POD -Selektoranforderungen heißt MatchExpressions.

In, existiert, ist nicht existiert, und notin sind alle gültige und erforderliche Betreiber. Stellen Sie bei 'in' und 'Notin' sicher, dass die festgelegten Werte nicht leer sind. Alle MatchLabels und MatchExpressions -Anforderungen sind zusammen und müssen alle erfüllt werden, um übereinstimmen zu können.

Voraussetzung:

Wir müssen Ubuntu 20 installieren.04 Um das theoretische Wissen in die Praxis umzusetzen und die Anweisungen in Kubernetes auszuführen. Die Kubectl -Befehle werden in diesem Beispiel auf dem Linux -Betriebssystem ausgeführt. Um Kubernetes unter Linux auszuführen, installieren Sie den Minikube -Cluster. Minikube erleichtert das Verständnis durch die Bereitstellung eines effizienten Mechanismus zum Testen von Befehlen und Anwendungen.

Wir haben den Befehl „Minikube Start“ auf dem Terminal ausgeführt, um die Minikube zu initialisieren. Dieser Befehl startet den Kubernetes -Cluster und erstellt eine virtuelle Maschine, die zur Ausführung von Cluster in der Lage ist. Es wird auch eine Verbindung mit dem Cluster mit der Kubectl -Installation herstellen. Die Ausgabe des Befehls „Minikube Start“ ist unten dargestellt.

Erstellen einer Bereitstellung

In diesem Beispiel haben wir zwei Bereitstellungen erstellt. Einen für einen Webdienst, der auf interner Infrastruktur ausgeführt wird, und ein anderer auf DMZ -Infrastruktur. Die erste Bereitstellung (mit dem Namen DEP11.Yaml) wird wie unten gezeigt gemacht.

Hier ist der gesamte DEP11.YAML -Konfigurationsdatei, die das Feld MatchLabels enthält.

Der Befehl zum Erstellen der Pod ist wie folgt.

Die Bereitstellung (benannt: DEP12.YAML), die auf der DMZ -Infrastruktur tätig ist.

Die gesamte Konfigurationsdatei finden Sie unten.

Wenn die Schoten bereitgestellt werden, werden die Etiketten ausgeführt = nginx. Für ein Objekt sind mehrere Etiketten möglich; Mehrere Beschriftungen mit demselben Schlüssel sind jedoch nicht. Wenn es in einem Objektmanifest mehrere Etiketteneinträge mit demselben Schlüssel gibt, wird der letzte Wert verwendet.

Das Selektor -Tag ist hier zu sehen, die für die Bereitstellung verwendet werden, um mit seinen Pods zu kommunizieren. Das Selektorfeld der Bereitstellung gibt an, wie er bestimmt, welche Pods verwaltet werden sollen. Sie müssen zuerst eine Beschriftung aus der POD -Vorlage auswählen. Kompliziertere Auswahlregeln waren ebenfalls möglich, wenn die POD -Vorlage den Kriterien entsprach. Hier ist der Befehl zum Erstellen des Pods.

Verwenden Sie den GET -Unterbefehl, um die Beschriftungen eines Pods zu sehen:

Die mit den oben genannten Bereitstellungsmanifests eingeführten Schoten sind im Codeblock unten angezeigt. Die POD-Template-Hash-Etikett wird automatisch vom Bereitstellungscontroller angewendet.

Die von Kubectl Get Pods bereitgestellten Schoten können mit einer oder mehreren Selector -Parametern gefiltert werden. In der Ausgabe werden die Etiketten als zusätzliche Spalte dargestellt.

Verwenden Sie mehrere Selektoren, um interne Nginx -Pods zu erhalten.

Der Bereitstellungscontroller verwendet einen Selektor, um zu bestimmen, welche Pods in einer Bereitstellung enthalten sind. Ein Replicaset -Objekt wird erstellt, wenn eine Bereitstellung erstellt wird, und der Replikationscontroller überwacht es, um sicherzustellen, dass die Anzahl der Pods mit der geplanten Nummer übereinstimmt.

Unsere Bereitstellungen haben derzeit vier Pods in einem bereiten Zustand.

Die Konfiguration eines Replikats ist unten gezeigt.

Hier ist der Rest der Ausgabe des Overhead -Code.

Lassen Sie uns eines der Etiketten auf einer Pod so ändern, dass es unserem Selektor nicht mehr entspricht. Schauen Sie sich die Spezifikation der MatchLabels an, um zu sehen, was passiert.

Nachdem die Run -Etikett auf dem POD geändert und ein weiterer Pod bereitgestellt wurde, um das Problem zu beheben.

Um zu bestätigen, dass die Bereitstellung erstellt wurde. Die folgenden Felder werden vorgestellt, wenn Sie die Bereitstellungen in Ihrem Cluster inspizieren: Name, Bereit, aktuell, verfügbar und Alter.

Wie Sie unten sehen können, haben wir mehrere Kriterien verwendet, um interne Nginx -Pods zu erwerben.

Abschluss:

Dieser Artikel hat die Unterschiede zwischen Etiketten und MatchLabels klargestellt. Wir haben bereits die Vorteile des Einsatzs von Etiketten gesehen. Die Kategorisierungs- und Filterfunktionen von Kubernetes -Etiketten sind fantastisch, wie Sie oben sehen können. Durch die Verwendung von Beschriftungen wird Ihre Protokolle relevanter. Überwachungstools können Sie bestimmte Workloads von Interesse auswählen, und das Bash -Scripting bietet Ihnen eine größere Datenspanne, die Sie mit dem Umgang mit dem Umgang mit dem Umgang mit Bash Scripting bieten können.