Annotations sind Schlüssel-Wert-Paare, mit denen sich beliebige, nicht identifizierende Metadaten an Kubernetes-Objekten ablegen lassen. Anders als Labels dienen sie nicht zur Auswahl oder Gruppierung von Objekten, sondern als Notizzettel für Menschen, Tools und Controller.

Labels oder Annotations?

Labels sind kurz, identifizierend und werden von Selectors zur Objektauswahl genutzt. Annotations dürfen dagegen größere und unstrukturierte Daten enthalten – von Build-Informationen über Kontaktadressen bis zu Konfigurationen für Erweiterungen. Selectors ignorieren Annotations vollständig. Als Faustregel gilt: Was zum Auswählen dient, gehört in Labels; was nur Informationen oder Steuerung für Werkzeuge liefert, in Annotations.

Syntax

Der Schlüssel folgt denselben Regeln wie bei Labels: optionaler Präfix (DNS-Unterdomäne mit Schrägstrich) plus Name. Der Wert kann nahezu beliebigen Text enthalten, auch strukturierte Daten wie JSON. Wie alle Metadaten zählen Annotations zur Gesamtgröße des Objekts, die Kubernetes begrenzt – riesige Datenmengen gehören in eine Datenbank oder einen separaten Speicher, nicht in die Annotation.

Typische Anwendungsfälle

  • Operatoren und Controller lesen Annotations, um ihr Verhalten zu steuern, etwa ein Ingress-Controller für Rewrite-Regeln.
  • Monitoring-Werkzeuge wie Prometheus erkennen über Annotationen wie prometheus.io/scrape: "true", welche Pods gescraped werden sollen.
  • Release-Systeme hinterlegen Commit-Hash, Build-Nummer oder Verantwortliche am Objekt.
  • Menschen notieren Hinweise für Kollegen, etwa den Grund für eine Besonderheit im Deployment.

Annotations setzen und ansehen

kubectl annotate pod web-1 description="Testlauf fuer Release 1.4"
kubectl annotate pod web-1 owner=team-a --overwrite
kubectl annotate pod web-1 owner-

Der letzte Befehl entfernt die Annotation wieder. Weitere Kommandos zeigt kubectl-Befehle.

Verwandte Grundlagen: Labels, Selector, Kubernetes, Custom Resource Definition.