Exposes metadata about the Pod itself to containers running inside it.

Two mechanisms: env vars (fieldRef, resourceFieldRef) and files via downwardAPI volume.

Pod fields as environment variables

env:
  - name: MY_NODE_NAME
    valueFrom:
      fieldRef:
        fieldPath: spec.nodeName
  - name: MY_POD_NAME
    valueFrom:
      fieldRef:
        fieldPath: metadata.name
  - name: MY_POD_NAMESPACE
    valueFrom:
      fieldRef:
        fieldPath: metadata.namespace
  - name: MY_POD_IP
    valueFrom:
      fieldRef:
        fieldPath: status.podIP
  - name: MY_POD_SERVICE_ACCOUNT
    valueFrom:
      fieldRef:
        fieldPath: spec.serviceAccountName

Container resource fields as env vars

containerName defaults to current container in env context: can be omitted.

resources:
  requests:
    memory: "32Mi"
    cpu: "125m"
  limits:
    memory: "64Mi"
    cpu: "250m"
env:
  - name: MY_CPU_REQUEST
    valueFrom:
      resourceFieldRef:
        resource: requests.cpu
  - name: MY_MEM_LIMIT
    valueFrom:
      resourceFieldRef:
        resource: limits.memory

downwardAPI volume

spec:
  containers:
  - name: processing-engine
    image: alpine
    resources:
      limits:
        memory: "128Mi"
    volumeMounts:
    - name: budget-volume
      mountPath: /etc/podinfo
  volumes:
  - name: budget-volume
    downwardAPI:
      items:
      - path: "labels"
        fieldRef:
          fieldPath: metadata.labels
      - path: "mem_limit"
        resourceFieldRef:
          containerName: processing-engine   # REQUIRED in volume context
          resource: limits.memory

containerName: optional vs required

WherecontainerName
containers[].env[].valueFrom.resourceFieldRefOptional (defaults to same container)
volumes[].downwardAPI.items[].resourceFieldRefRequired (volume is Pod-scoped)

Exam gotchas

  • fieldRef.fieldPath uses API paths: metadata.name, spec.nodeName, status.podIP
  • resourceFieldRef in env: containerName optional for same container
  • resourceFieldRef in downwardAPI volume: containerName always required
  • Each item needs path + fieldRef (or resourceFieldRef)