Skip to main content
Ephemeral storage in Astro Private Cloud (APC) uses Kubernetes emptyDir volumes for temporary data that doesn’t need to persist across pod restarts. This guide covers configuring ephemeral storage for Airflow components including Dags, logs, and Redis.

Ephemeral storage overview

Ephemeral storage (emptyDir volumes) provides:
  • Temporary storage that exists for the lifetime of a pod.
  • Faster I/O if using memory-backed storage.
  • No persistence across pod restarts.
  • Shared access between containers in the same pod.
APC 1.x runs every Airflow container with readOnlyRootFilesystem: true. To keep Airflow writable where it needs to be, the chart mounts emptyDir volumes at specific subpaths under /usr/local/airflow, such as /usr/local/airflow/logs, and at /usr/local/airflow/dags when using git-sync or the emptyDir Dag mode. Depending on log volume and Dag size, these volumes can consume significant ephemeral storage and exceed namespace limits. Factor this into your ephemeral storage sizing. For details on adding more writable directories, see Read-only root filesystem.

Configurable volumes

Dags volume (gitSync)

When using git-sync for Dag deployment, Dags are stored in an emptyDir volume.
Parameters:
  • sizeLimit: Maximum storage size (e.g., 1Gi, 2Gi).
  • medium: Storage medium.
    • "" (empty): Use node’s default storage (disk).
    • "Memory": Use RAM (tmpfs) for faster access.

Logs volume

Task logs can be stored in ephemeral storage when persistence is disabled.
Recommendations:
  • Use larger sizeLimit for high-volume task execution.
  • Avoid medium: Memory for logs unless you have aggressive cleanup.
  • Enable log groomer sidecar to prevent storage exhaustion.

Redis volume

When Redis persistence is disabled, it uses ephemeral storage.

Configuration examples

Development environment

Production environment

High-performance configuration

For latency-sensitive workloads:

Storage medium comparison

Memory-backed volumes (medium: Memory) count against container memory limits. If the volume grows too large, pods may be OOMKilled. Size memory limits accordingly or use disk-backed storage.

Sizing guidelines

Dags volume

Logs volume

Redis volume

Monitoring storage usage

Check volume usage

Check memory-backed volume

Troubleshooting

Pod eviction due to storage

Symptom: Pods evicted with DiskPressure or ephemeral storage exceeded. Cause: EmptyDir volume exceeded node’s ephemeral storage limits. Solution:
  1. Increase sizeLimit in emptyDirConfig.
  2. Enable log groomer with shorter retention.
  3. Switch to persistent storage.

Out of memory with memory-backed volumes

Symptom: Pods OOMKilled when using medium: Memory. Cause: Memory-backed emptyDir counts against container memory limits. Solution:
  1. Increase container memory limits.
  2. Reduce sizeLimit on memory-backed volumes.
  3. Switch to disk-backed storage.

Slow Dag parsing

Symptom: Dag processing takes too long. Cause: Disk I/O latency on Dag volume. Solution:
  1. Use medium: Memory for Dag volume.
  2. Ensure sufficient sizeLimit.
  3. Consider SSD-backed nodes.

Best practices

  • Set explicit sizeLimit to prevent unbounded storage growth.
  • Use memory sparingly for performance-critical, small volumes only.
  • Monitor usage and set alerts for storage utilization.
  • Use persistent storage for production logs since ephemeral storage loses logs on restart.
  • Size for peak usage to account for burst workloads.
  • Enable log groomer to prevent log accumulation.