This topic applies only if the ephemeral storage technology preview is enabled in OKD 3.10. This feature is disabled by default. If enabled, the OKD cluster uses ephemeral storage to store information that does not need to persist after the cluster is destroyed. To enable this feature, see configuring for ephemeral storage.
In addition to persistent storage, pods and containers may require ephemeral or transient local storage for their operation. The lifetime of this ephemeral storage does not extend beyond the life of the individual pod, and this ephemeral storage cannot be shared across pods.
Prior to OKD 3.10, ephemeral local storage was exposed to pods using the container’s writable layer, logs directory, and EmptyDir volumes. Pods use ephemeral local storage for scratch space, caching, and logs. Issues related to the lack of local storage accounting and isolation include the following:
Pods do not know how much local storage is available to them.
Pods cannot request guaranteed local storage.
Local storage is a best effort resource.
Pods can be evicted due to other pods filling the local storage, after which new pods are not admitted until sufficient storage has been reclaimed.
Unlike persistent volumes, ephemeral storage is unstructured and shared, the space, not the actual data, between all pods running on a node, in addition to other uses by the system, the container runtime, and OKD. The ephemeral storage framework allows pods to specify their transient local storage needs, and OKD to schedule pods where appropriate and protect the node against excessive use of local storage.
While the ephemeral storage framework allows administrators and developers to better manage this local storage, it does not provide any promises related to I/O throughput and latency.
Ephemeral local storage is always made available in the primary partition. There are two basic ways of creating the primary partition, root and runtime.
This partition holds the kubelet’s root directory,
/var/log/ directory. This partition may be shared between user
pods, OS, and Kubernetes system daemons. This partition can be consumed by pods
via EmptyDir volumes, container logs, image layers, and container writable
layers. Kubelet manages shared access and isolation of this partition. This
partition is ephemeral, and applications cannot expect any performance SLAs,
disk IOPS for example, from this partition.
This is an optional partition that runtimes can use for overlay
file systems. OKD attempts to identify and provide
shared access along with isolation to this partition. Container image
layers and writable layers are stored here. If the runtime partition
root partition does not hold any image layer or other writable storage.
When you use DeviceMapper to provide runtime storage, a containers' copy-on-write layer is not accounted for in ephemeral storage management. Use overlay storage to monitor this ephemeral storage.