Ephemeral storage configuration
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 uses readOnlyRootFilesystem, which mounts the entire /usr/local/airflow directory on an emptyDir volume for every Airflow pod. Depending on Dag size, this can consume significant ephemeral storage and exceed namespace limits. Factor this into your ephemeral storage sizing.
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
sizeLimitfor high-volume task execution. - Avoid
medium: Memoryfor 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:
- Increase
sizeLimitin emptyDirConfig. - Enable log groomer with shorter retention.
- 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:
- Increase container memory limits.
- Reduce
sizeLimiton memory-backed volumes. - Switch to disk-backed storage.
Slow Dag parsing
Symptom: Dag processing takes too long.
Cause: Disk I/O latency on Dag volume.
Solution:
- Use
medium: Memoryfor Dag volume. - Ensure sufficient
sizeLimit. - Consider SSD-backed nodes.
Best practices
- Set explicit
sizeLimitto 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.