Ein Selector (Label Selector) ist in Kubernetes eine Abfrage über Labels, mit der sich eine Menge von Objekten auswählen lässt. Services, Workload-Controller und viele andere Komponenten arbeiten mit Selectors, um ihre Zielobjekte zu finden.
Equality-basierte Selectors
Die klassische Form vergleicht Schlüssel mit Werten über = und !=. Mehrere Bedingungen werden durch Kommas zu einer Und-Verknüpfung zusammengefügt – ein Objekt muss dann alle Bedingungen gleichzeitig erfüllen:
kubectl get pods -l environment=production,tier=frontend
kubectl get pods -l environment!=production
Set-basierte Selectors
Die mengenbasierte Form arbeitet mit den Operatoren in, notin und exists. Sie erlaubt Ausdrücke, die mit Gleichheit allein nicht möglich sind:
kubectl get pods -l 'environment in (production,staging)'
kubectl get pods -l 'tier notin (frontend,backend),app'
Der letzte Ausdruck fordert: tier ist weder frontend noch backend, und der Schlüssel app existiert. In YAML-Maniesten werden solche Bedingungen als matchExpressions mit den Operatoren In, NotIn, Exists und DoesNotExist notiert.
Wo Selectors zum Einsatz kommen
- Ein Service wählt über
spec.selectordie Pods aus, an die er Verkehr weiterleitet. - Deployments, ReplicaSets und Jobs tragen ihren Selector in
spec.selector; er ist dort nach der Erstellung unveränderlich. - NetworkPolicies und Pod-Affinitäten filtern beziehungsweise steuern Pods über Selectors.
- Die API unterstützt das Filtern bei List- und Watch-Anfragen über den Parameter
labelSelector.
Selector und Feldauswahl
Nicht zu verwechseln mit dem Label Selector ist der Feld-Selector (Field Selector), der über Objektfelder wie metadata.name oder spec.nodeName filtert – etwa kubectl get pods --field-selector=status.phase=Running. Labels und Selectors zusammen sind das zentrale Gruppierungs- und Auswahlkonzept von Kubernetes.
Verwandte Grundlagen: Labels, Annotations, Job, RoleBinding.