Die Kubernetes Downward API macht Metadaten eines Pods innerhalb seiner Container verfügbar, ohne dass die Anwendung die Kubernetes-API selbst abfragen muss. Typische Werte sind Pod-Name, Namespace, Pod-IP oder Ressourcen-Grenzen.
Zwei Wege: Umgebungsvariablen und Dateien
Die Downward API arbeitet auf zwei Arten: als Umgebungsvariable (im Manifest unter env mit valueFrom.fieldRef oder resourceFieldRef) oder als Volume-Datei (Volume-Typ downwardAPI). Die Werte stehen direkt in der Pod-Spec; die Anwendung liest sie wie jede andere Konfiguration.
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
Verfügbare Felder
- Per
fieldRefauf Pod-Ebene:metadata.name,metadata.namespace,metadata.uid,metadata.labels[<key>],metadata.annotations[<key>],spec.nodeName,spec.serviceAccountName,status.hostIP,status.podIP. - Per
resourceFieldRefauf Container-Ebene:resources.requests.cpu,resources.requests.memory,resources.limits.cpu,resources.limits.memory. - Labels und Annotations sind nur als Volume-Dateien verfügbar, nicht als Umgebungsvariable.
Wichtige Eigenschaften
- Umgebungsvariablen werden beim Start des Containers gesetzt und danach nicht aktualisiert.
- Volume-Dateien aktualisiert der kubelet regelmäßig – spätere Änderungen an Labels oder Annotations kommen so an.
- Fehlen CPU- oder Memory-Limits, liefert die Downward API den Node-Allocatable-Wert als Standard.
- Die Downward API ist read-only: Sie gibt nur Metadaten weiter, die bereits existieren.
Typische Einsätze
- Logging: Die Anwendung schreibt ihren Pod-Namen in die Logs, ohne ihn hart zu kodieren.
- Konfiguration: Pod-IP, Node-Name oder Umgebung fließen in die Anwendungskonfiguration ein.
- Ressourcenbewusstes Verhalten: Die App liest ihre CPU- und Memory-Limits per
resourceFieldRef.
Die Downward API ist auch eine Quelle im Projected Volume – dort bündelt sie Metadaten mit ConfigMaps und Secrets in einem Mount. In StatefulSets hinter einem Headless Service liefert metadata.name genau den festen Pod-Namen, der der DNS-Adresse des Pods entspricht. Mutierende Admission Webhooks ergänzen solche fieldRef-Referenzen oft automatisch in Pod-Specs.