Kubernetes

Kubernetes Label-SelektorTreffer nachvollziehen

Labels prüfen und für jede Ressource sehen, welche Bedingungen erfüllt sind.

Kubernetes Label-Selektor

Labels oder Ressourcen als JSON

Treffer und Bedingungen

Die Eingaben bleiben im Browser. Keine Cluster-Verbindung, kein Upload, keine Netzabfrage.

Eingabeformat und unterstützte Syntax

= · == · != · in · notin · key · !key. Kommas verknüpfen Bedingungen mit UND; ein leerer Selektor trifft alle Eingaben.

Grenzen: 500.000 JSON-Zeichen, 8.192 Selektor-Zeichen, 500 Ressourcen, 64 Bedingungen, 256 Labels je Ressource.

Semantik: Kubernetes 1.35 / apimachinery v0.35.0; Gleichheit, Mengen und Existenz.

Eingabe geändert. Vor dem Export erneut testen.

Ein Kubernetes Label-Selektor kann mehr Pods auswählen als erwartet. Bei env!=prod genügt auch ein fehlender env-Schlüssel. Prüfen Sie deshalb die einzelnen Bedingungen, bevor Sie die Abfrage für einen Service oder einen kubectl-Aufruf übernehmen.

Eine Label-Map und ein Ressourcenobjekt sind verschiedene Eingaben. Der Modus legt ausdrücklich fest, ob das gesamte Objekt oder metadata.labels gelesen wird. Die beiden Eingaben bleiben getrennt erhalten; ein Label namens metadata wird nicht als äußere Struktur interpretiert.

Was prüft dieser Kubernetes Label-Selektor?

Die ausschließende Bedingung finden

Dieser Kubernetes Label-Selektor wertet jede Bedingung aus, auch nach einem Fehlschlag. Ein Web-Pod in development kann app=web und !paused erfüllen, aber nicht zur gewünschten Umgebungsmenge gehören. So lässt sich die konkrete Abweichung erkennen, ohne Bedingungen versuchsweise zu entfernen.

Drei Ressourcenkarten durchlaufen eine Bedingungskette; nur die vollständig passende Karte erreicht die Treffergruppe.

Leere Werte von fehlenden Schlüsseln unterscheiden

Ein Label mit dem Wert "" ist vorhanden. Ein fehlender Schlüssel besitzt dagegen gar keinen Wert. Die Auswertung zeigt beide Zustände getrennt und erklärt, weshalb eine negative Bedingung auch ohne Label erfüllt sein kann.

Karten mit gefülltem Feld, leerem Feld und fehlendem Feld führen auf unterschiedliche Prüfpfade.

Drei Kontrollen vor der Übernahme

01

Die richtige Quelle wählen

Der Ressourcenmodus akzeptiert ein Objekt, ein Array oder einen Kubernetes-Typ List beziehungsweise *List mit items-Array. Ausgewertet wird nur metadata.labels. Die Pod-Vorlage eines Deployments wird nicht automatisch gelesen.

02

Auch einen fehlenden Schlüssel testen

Ändern Sie im Beispiel production in development und entfernen Sie anschließend environment. Vergleichen Sie in mit notin. Automatisch wird nach 350 ms Ruhe geprüft; im manuellen Modus funktioniert auch Strg/Cmd + Enter.

03

Die Einzelprüfung vor dem Export lesen

Klappen Sie eine Ressource auf, um Labels und Bedingungen zu sehen. Die Anzeige wächst in Schritten von 50, der Export enthält alle Einträge. Jede Eingabeänderung sperrt Kopieren und Download bis zur nächsten erfolgreichen Prüfung.

Vom Label-Ausdruck zum überprüfbaren Bericht

Schlüssel und Werte nach ihren Regeln prüfen

Ein optionales DNS-Präfix muss kleingeschrieben sein und darf 253 Zeichen umfassen. Der Name enthält 1–63 zulässige ASCII-Zeichen; Großbuchstaben sind erlaubt. Werte dürfen leer sein oder bis zu 63 Zeichen enthalten. Reservierte Präfixe sind syntaktisch weiterhin gültig.

Gleichheit und Mengen verbinden

= und == prüfen Gleichheit, != prüft Ungleichheit. in und notin vergleichen mit einer Wertemenge. Kommas zwischen Bedingungen bedeuten UND. Alternativen für denselben Schlüssel gehören in eine gemeinsame in-Menge; mehrere Gleichheitsbedingungen erweitern die Auswahl nicht.

Ressourcen auch bei gleichen Namen unterscheiden

Der Bericht behält Eingabeindex, JSON-Pfad sowie vorhandene Angaben zu Typ, Namespace und Name. Fehlende oder null-wertige metadata- und labels-Felder ergeben eine leere Map. Gleiche Namen werden nicht zusammengefasst; jeder Eingabeeintrag erhält sein eigenes Ergebnis.

Keine stillen Typumwandlungen

Die Strings "01" und "1" bleiben verschieden. Zahlen, boolesche Werte und null sind keine gültigen Label-Strings und werden zurückgewiesen. Doppelte JSON-Schlüssel erzeugen ebenfalls einen Fehler, statt den früheren Wert unbemerkt zu überschreiben.

Grenzen der Eingabe und Aussagekraft

Ein festgelegter Teil der String-Syntax
Grundlage ist Kubernetes 1.35 / apimachinery v0.35.0 für Gleichheit, Mengen und Existenz. Numerische Vergleiche mit < oder >, schlüsselübergreifendes ODER, Platzhalter, reguläre Ausdrücke, Field Selectors und Node Affinity sind nicht enthalten.
Striktes JSON und ausdrücklicher Modus
Kommentare und abschließende Kommas sind unzulässig. YAML, Dateien, URL-Abrufe sowie strukturierte matchLabels- oder matchExpressions-Objekte werden nicht eingelesen. List-Typen benötigen items als Array; bei normalen Ressourcen gilt ausschließlich deren eigenes metadata.labels.
Begrenzte Verarbeitung ohne Teilerfolg
Zulässig sind 500.000 JSON-Zeichen, 8.192 Selektor-Zeichen, 500 Ressourcen, 64 Bedingungen und 256 Labels je Ressource. Gezählt werden UTF-16-Codeeinheiten. Zusätzlich gelten Tiefe 100, 50.000 JSON-Knoten und 1.000 Zeichen je Zahl. Ein ungültiges Label stoppt den gesamten Bericht.
Leere Selektoren nicht auf andere APIs übertragen
Ein leerer kubectl Selektor trifft hier alle gültigen Eingabeobjekte, auch eine leere Map. Ein leeres JSON-Feld ist dagegen keine Map; dafür ist {} nötig. Leere Service-Selektoren, strukturierte null-Selektoren und Controller-Prüfungen können andere Regeln haben.
Ein Prüfbericht ersetzt kein Manifest
Exportiert werden Identitätsangaben, Labels und Bedingungsergebnisse, nicht das vollständige Ressourcenobjekt. Es gibt keine Korrektur oder Änderung von Labels. Ein Treffer bestätigt weder Pod-Bereitschaft noch Service-Endpunkte, Routing, Admission-Regeln oder Controller-Zuordnung.

Fragen zum Thema Kubernetes Label-Selektor

Wie frage ich Pods anhand mehrerer Labels ab?

Verknüpfen Sie Anforderungen mit Kommas, etwa app=web,environment=production. Beide müssen zutreffen. Ein DNS-Präfix gehört zum Schlüssel: app.kubernetes.io/name ist nicht dasselbe Label wie name.

Ist ODER zwischen Label-Bedingungen möglich?

Ein ODER über verschiedene Schlüssel ist in dieser Syntax nicht vorgesehen. Für mehrere Werte desselben Schlüssels eignet sich environment in (production,staging). Zwei Gleichheitsbedingungen für denselben Schlüssel werden dagegen mit UND ausgewertet.

Darf ein Label einen Schlüssel ohne Wert haben?

Ja: {"maintenance":""} enthält einen vorhandenen Schlüssel mit leerem String. maintenance prüft die Existenz, maintenance= den leeren Wert und !maintenance das Fehlen des Schlüssels. Auch maintenance in () steht in der String-Syntax für einen vorhandenen leeren Wert.

Wie zähle ich Ressourcen ohne ein bestimmtes Label?

Verwenden Sie !key und lesen Sie die Trefferzahl. Damit fehlt der angegebene Schlüssel, nicht zwingend jedes Label. Für eine Cluster-Gesamtzahl muss die Eingabe alle relevanten Ressourcen enthalten; hier wird nur der bereitgestellte Ausschnitt gezählt.

Warum trifft env!=prod auch ohne env-Label zu?

Negative Gleichheit und notin schließen fehlende Schlüssel ein. Soll env vorhanden sein und zugleich einen anderen Wert besitzen, schreiben Sie env,env!=prod. Die Einzelprüfung trennt den fehlenden Schlüssel vom vorhandenen abweichenden Wert.

Noch eine offene Frage zum Selektor?

Mit den tatsächlichen Labels testen

Dieser Kubernetes Label-Selektor macht die fehlschlagenden Bedingungen in Ihrem JSON sichtbar, bevor Sie eine Workload-Konfiguration ändern.