‫Es gibt zwei Metadaten in dieser YAML, die Sie
‫wahrscheinlich in den Beispielen gesehen und darüber
‫nachgedacht haben und sich gefragt haben, wofür Labels und Anmerkungen wirklich
‫da sind.
‫Sie haben ihre Bedeutung wahrscheinlich nicht erkannt.
‫Sie sind eine Schlüsselkomponente von Kubernetes und wie Dinge
‫miteinander verbunden sind.
‫Viel mehr als Swarm.
‫Der erste ist Etiketten. Beschriftungen werden unter dem
‫Metadatenschlüssel im Stammverzeichnis der Datei abgelegt, sodass sie
‫dort optional sind. Sie müssen sie nicht angeben,
‫sie sind jedoch ein Schlüsselwert oder eine Liste von Schlüsselwerten unter
‫der Überschrift "labels".
‫Diese gibt es aus mehreren Gründen.
‫Sie sind nicht immer erforderlich, aber möglicherweise benötigen
‫Sie sie, um die Objekte auszuwählen, zu gruppieren
‫und später sogar zu filtern.
‫Dies kann alles sein, was das Objekt
‫oder die Ressource beschreibt.
‫Es kann ein Schlüsselwertpaar sein, dass der Wert einfach wahr
‫oder falsch ist.
‫Die Schlüssel können sein, was immer Sie wollen.
‫Es kann nur nicht mehr als einen Schlüssel in jedem Objekt
‫geben, also können Sie nicht zwei Schlüssel in einer Reihe
‫in der YAML für dasselbe Objekt haben, die den
‫Schlüsselnamen haben, sagen wir App, richtig. Diese dienen eigentlich zur
‫Beschreibung des Objektes. Diese Ressourcen, die
‫wir erstellen, haben unterschiedliche Eigenschaften.
‫Vielleicht ist es die Umgebung wie Prod, Dev oder Test.
‫Vielleicht ist es der Ort wie dmz oder
‫das Backend oder Frontend. Vielleicht ist es der Name der
‫App oder vielleicht der Name des Kunden, wenn Sie Client-Websites
‫hosten oder so. Es könnte einfach alles sein,
‫was Sie wollen, und es gibt nicht viele Standards.
‫Die in den Ressourcen aufgeführte Kubernetes-Dokumentation enthält einige
‫Beispiele, die jedoch nur Beispiele sind.
‫Es gibt nicht viele Standards in der Branche.
‫Es liegt wirklich an Ihrem Team und Ihrem Unternehmen,
‫wie Sie diese Sache beschreiben möchten.
‫Wir haben auch Anmerkungen. Sie sind eine Art Yin und Yang.
‫Die Etiketten sind sehr einfach.
‫Sie sind sehr begrenzt in der Größe und welche Zeichen
‫Sie in sie einfügen können. Sie sollen die Ressource beschreiben.
‫Bei Annotationen handelt es sich um komplexere
‫Daten und mehrwertige Daten.
‫Normalerweise werden Anmerkungen angezeigt, die verwendet werden, wenn Sie
‫benutzerdefinierte Elemente in Kubernetes einfügen, die mit Kubernetes
‫kommunizieren und Daten daraus abrufen können.
‫Die Annotationen dienen dazu, Konfigurationsdaten
‫zu speichern, beispielsweise können Proxies und Ingress-Elemente
‫häufig unterschiedliche Konfigurationen in unterschiedlichen Annotationen speichern.
‫Diese dienen also nicht
‫unbedingt der Beschreibung, sondern eher der Konfiguration.
‫Kehren wir für eine Minute zu den Labels zurück, denn
‫es geht um viel mehr, um zu verstehen, wie all diese Dinge
‫in Kubernetes funktionieren.
‫Das erste ist, dass wir einfache Filter durchführen können, indem wir uns
‫auf die Beschriftungen von der Befehlszeile aus beschränken.
‫Wir können Pods holen und nur sagen, zeig mir nur
‫die Pods mit diesem Etikett.
‫Sie können dort sogar ein Komma verwenden, um mehrere Bezeichnungen hinzuzufügen.
‫Tatsächlich gibt es eine ganze Syntaxebene, in der Sie
‫verschiedene Arten von Syntaxen ausführen können, verschiedene oder
‫und und.
‫Wirklich, es ist eines dieser Dinge, bei denen
‫ich Ihnen das alles nicht beibringen möchte, weil es so sein wird,
‫als würde man Regex lernen. Es ist etwas, wo man es nicht wirklich
‫lernt, wenn man es nur einmal probiert.
‫Nur wenn Sie es brauchen, werden Sie
‫es wirklich verstehen. Die Dokumentation von Kubernetes
‫ist wirklich toll. Sie haben mehrere Links,
‫die ich in die Ressourcen eingefügt habe, die Sie durch die verschiedenen
‫Möglichkeiten führen, wie Sie möglicherweise Etiketten benötigen.
‫Um ehrlich zu sein, müssen Sie das erst wirklich lernen, wenn Sie
‫wissen, dass Sie es brauchen, um ein Problem zu lösen.
‫Sie können es sogar zum Anwenden von Befehlen verwenden.
‫Wenn Sie eine ganze Reihe von Dingen in einer großen
‫YAML-Datei haben und nur bestimmte Teile dieser
‫YAML-Datei anwenden möchten.
‫Ich mache das nicht so oft, aber hier
‫können Sie es einschränken, indem Sie nur die Änderungen oder Informationen
‫anwenden, die Sie in die YAML für bestimmte Labels
‫eingegeben haben.
‫Natürlich können Sie auch hier die
‫gleiche Syntax verwenden. Sie können nur ein Etikett haben.
‫Sie können Kommas eingeben und dort mehrere Bezeichnungen und
‫Werte verwenden. Es liegt an dir.
‫Es gibt eine andere Sache, die die Labels tun, die für
‫die Funktionsweise von Kubernetes wichtig ist.
‫Es kommt darauf an, dass es bestimmte Ressourcen gibt, die mit anderen
‫Ressourcen kommunizieren oder eine Verbindung zu ihnen herstellen oder
‫mit ihnen in Beziehung stehen.
‫Wie auch immer du es sagen willst. Das gute Beispiel
‫ist, dass die Dienste wissen müssen, an welche Pods
‫sie ihren Datenverkehr senden sollen. Sie fragen sich vielleicht, woher es das weiß?
‫Ich meine, wenn Sie es eingeben, wenn Sie einen
‫Kubectl-Dienstbefehl ausführen und ihn auf die
‫Bereitstellung verweisen, womit identifiziert er diese Bereitstellung genau?
‫Nun, in der CLI würden Sie denken, dass sie tatsächlich
‫auf das Bereitstellungsobjekt verweist.
‫In Wirklichkeit muss der Service jedoch mit den Pods und nicht mit
‫der Bereitstellung selbst sprechen.
‫Es werden sogenannte Label-Selektoren verwendet.
‫Dies ist bei vielen verschiedenen Ressourcen üblich, bei denen es
‫sich um höhere Abstraktionsebenen von Hülsen handelt.
‫Damit sie sich auf die Pods beziehen oder wissen, welche Pods
‫ihre sind, verwenden sie Label-Selektoren. Sie werden das in
‫der YAML in unserem Repo sehen, das Sie in
‫den letzten Vorträgen verwendet haben.
‫Wenn Sie in der App suchen. yml, Sie werden feststellen, dass wir die
‫ganze Zeit über ein paar Dinge dort hatten, über
‫die wir nicht gesprochen haben. Der erste ist am
‫oberen Teil mit dem Service, wir haben unter der Spezifikation einen Selektor.
‫Das muss da sein.
‫Wir sagen ihm den Schlüssel und den Wert eines Labels für
‫Pods, zu denen der Datenverkehr geleitet werden soll.
‫Das ist nur eine einfache Übereinstimmung.
‫Damit muss es Hülsen finden.
‫Dann werden Sie unten in der Bereitstellung
‫sehen, dass unsere Spezifikation einen eigenen
‫Selektor hat, matchLabels, app, app-nginx.
‫Was dort passiert, ist, dass beide Objekte
‫Pods basierend auf dieser Übereinstimmung auswählen.
‫Das bedeutet, dass in der Vorlage unter
‫unserer Spezifikation, in der wir die Pods ausschablonieren, dieses
‫Etikett erforderlich ist, damit diese Ressourcen ihre Pods
‫finden können.
‫Das Schöne an den neueren Versionen von Kubernetes
‫ist, dass diese zumindest bei einer einzigen Bereitstellung
‫synchron sein müssen. Die Bereitstellung schlägt tatsächlich
‫fehl, wenn festgestellt wird, dass die Selektor-Übereinstimmungsbeschriftungen nicht mit
‫den Vorlagen-Metadatenbeschriftungen übereinstimmen, da dies erforderlich ist, damit
‫die Pods überhaupt bereitgestellt und gesteuert
‫werden können.
‫Es soll verhindern, dass Sie es versehentlich
‫falsch machen. Es wird von Ihnen erwartet,
‫dass Sie diese Teile dort haben. In älteren Versionen gab es
‫eine Möglichkeit, diese standardmäßig automatisch zu generieren, sodass Sie
‫das Zeug weglassen konnten. Sie haben jetzt aufgehört, das zu
‫tun, und sie zwingen dich, das hier einzutragen. Ich finde
‫das gut, vor allem, wie wichtig
‫diese Labelselektoren sind. Technisch gesehen macht Swarm, wenn
‫Sie zu Swarm zurückgekehrt sind, ein bisschen von diesem Out-of-the-Box-Verfahren, bei
‫dem es Etiketten gibt, die die Dinge von Stapeln zu
‫Diensten und Stapeln zu ihren Volumina und dergleichen zusammenfassen.
‫Wir können es nicht wirklich kontrollieren und wir sehen es nicht sehr
‫oft in der Benutzeroberfläche. Es ist irgendwie im
‫Hintergrund für uns in Swarm gemacht.
‫Aber es ist auch sehr einschränkend.
‫Sie können die Dinge nicht im laufenden Betrieb ändern.
‫Sie können diese nicht unbedingt für wirklich einzigartige
‫Setups anpassen.
‫Hier könnten wir möglicherweise ein Service-Gespräch mit mehreren
‫Bereitstellungen führen, wenn wir diese
‫Selektoren ändern möchten.
‫Bei Selektoren geht es nicht nur um die Verknüpfung von Ressourcen.
‫Es geht auch darum zu kontrollieren, wohin sie gehen.
‫Auf den Knoten können Sie Beschriftungen und Selektoren verwenden, um zu
‫steuern, wohin sie gehen.
‫Sie können noch weitere Anpassungen für so genannte Taints und Toleranzen
‫vornehmen, die sozusagen das Gegenteil von dem sind,
‫bei dem Sie den Knoten mitteilen, dass sie bestimmte Dinge nicht
‫ausführen können, damit Kubernetes weiß, wohin Ihre Pods
‫im Grunde genommen gesteuert werden sollen.
‫Diese Dinge werden sehr individuell und
‫sehr schnell fortgeschritten. Wenn man sie alle zusammen macht,
‫kann das ein bisschen haarig und verrückt werden.
‫Ich empfehle Ihnen auf jeden Fall, langsam mit ihnen umzugehen.
‫Halten Sie alles einfach und sofort einsatzbereit.
‫Vermeiden Sie Hautunreinheiten und Toleranzen, bis Sie diese
‫wirklich untersuchen müssen.
‫Gut. Lassen Sie uns für diesen ganzen Abschnitt aufräumen.
‫Wenn in einem Standard-Namespace für Ihren Cluster etwas ausgeführt wird, wenn
‫Sie nur einen Kubectl-Befehl ausführen, um alles abzurufen, und
‫wenn Sie dort Inhalte sehen, die über die Kubernetes-API selbst
‫hinausgehen, dann löschen Sie alle diese Ressourcen, da wir weitermachen
‫werden . Die brauchen wir nicht.