Labels sind Schlüssel-Wert-Paare, mit denen sich Kubernetes-Objekte wie Pods, Services oder Nodes markieren und organisieren lassen. Sie sind die Grundlage dafür, dass Controller und Werkzeuge aus der großen Menge an Objekten genau die richtigen auswählen können.
Was ist ein Label?
Ein Label ist ein kurzes Schlüssel-Wert-Paar, zum Beispiel app=nginx oder tier=frontend. Labels beschreiben identifizierende Eigenschaften eines Objekts, die für Menschen und Organisationen bedeutsam sind – etwa Umgebung, Anwendung oder Team. Das Kubernetes-System selbst leitet daraus keine Semantik ab; die Bedeutung entsteht erst durch Selectors, die Objekte über ihre Labels auswählen.
Der Schlüssel besteht aus einem optionalen Präfix und einem Namen: Der Präfix ist eine DNS-Unterdomäne (maximal 253 Zeichen, endet mit einem Schrägstrich), der Name maximal 63 Zeichen aus Buchstaben, Ziffern, -, _ und . – er muss mit einem Buchstaben oder einer Ziffer beginnen und enden. Der Wert darf leer sein oder bis zu 63 Zeichen nach denselben Regeln enthalten. Der Präfix kubernetes.io/ ist für das System reserviert.
Wofür werden Labels verwendet?
- Ein Service wählt seine Ziel-Pods über einen Label-Selector aus.
- Ein Deployment oder ReplicaSet findet über
matchLabelsdie Pods, die es verwaltet. - DaemonSets und Jobs nutzen
nodeSelectorbeziehungsweise Labels, um auf passenden Nodes zu laufen. - Operatoren und Werkzeuge filtern, gruppieren und abrechnen damit Objektmengen.
Empfohlene Standard-Labels
Für Anwendungen gibt es empfohlene Labels unter dem Präfix app.kubernetes.io/: name, instance, version, component, part-of und managed-by. Sie sorgen dafür, dass Tools und Dashboards Anwendungen einheitlich identifizieren können. Weit verbreitet sind außerdem environment (etwa prod, dev) und team.
Labels setzen und ändern
kubectl label pod web-1 app=nginx
kubectl label pod web-1 env=prod --overwrite
kubectl label pod web-1 env-
Der dritte Befehl entfernt das Label wieder. Ausführliche Kommandos finden sich unter kubectl-Befehle. Große oder unstrukturierte Zusatzdaten gehören nicht in Labels, sondern in Annotations.
Verwandte Grundlagen: Kubernetes, Pod, ServiceAccount.