This article will cover Kubernetes’ handling of ephemeral storage and teach you how these volumes are created in active clusters. We will explain in detail what volumes are in Kubernetes and what are its basic types. We will also provide a guide for using generic volumes in Kubernetes.
Volumes in Kubernetes
A volume in Kubernetes can be compared to a directory that the containers in a pod can access. In Kubernetes, there are various volume kinds and each type specifies the volume’s content and method of creation. With Docker, the concept of volume was existent but the sole drawback was that the volume was severely constrained to a single pod. The volume was also lost after a pod’s life was over. Kubernetes volumes, however, are not constrained to a particular kind of container. It supports any or all of the Kubernetes pod’s deployed containers. The ability of the pod to use several types of storage simultaneously is one of the primary benefits of Kubernetes volume. Kubernetes offers users a choice between two different kinds of volumes: persistent and ephemeral. Ephemeral volumes only exist for the duration of a pod and are removed as soon as the pod terminates, in contrast to persistent volumes, which keep data throughout the lifecycle of a pod.
The Management of Ephemeral Storage by Kubernetes
Some pods host applications demand data storage but do not need the data to persist during container restarts. These consist of programs that extract read-only input data from files, such as configuration and secret key information. The volume associated with a cache service’s pods often moves unimportant data into limited memory storage without affecting performance. Therefore, the volume just needs to endure the duration of the pod.
To meet the storage requirements of these transient pods, Kubernetes uses ephemeral volumes. Pods can start and end without being constrained by the placement of a persistent volume thanks to ephemeral volumes. On each node in a Kubernetes cluster, there is an option for local ephemeral storage that is either connected to the RAM or locally writable devices.
Let us get a better grasp on this topic by looking at how Kubernetes handles the management of ephemeral storage.
What are the Different Ephemeral Storage Options?
Ephemeral storage is housed on an unstructured volume that is shared by the operating system, all active pods on the node, and the container runtime. These entities are restricted from utilizing the local storage of the node excessively by the volumes. Ephemeral storage is always housed on the main partition of local storage. This divide can be made in the following ways:
Root
The root storage directory is used by the operating system, user pods, and the Kubernetes system daemons all at the same time. /var/log/ and the kubelet root directory, which is by default /var/lib/kubelet/, are both located on the root disk. Pods can use this partition by using container- image layers, EmptyDir volumes, and writeable layers. The kubelet service controls the isolation of and shared access to the root partition. The root partition does not provide durability, disk IOPS, or other performance parameters because it is ephemeral.
Runtime
Container runtimes create overlay file systems by runtime partition. Runtime then offers shared access once the partition has been implemented with isolation. Image layers and container-writable layers are kept on this partition. These layers are automatically written to the runtime partition when it has been formed, not the root partition.
Ephemeral Volumes and Their Types in Kubernetes
Depending on the intended use, Kubernetes supports a variety of ephemeral volume types. These consist of:
Generic Ephemeral Volumes
Any storage driver that enables the dynamic provisioning of persistent volumes can be employed to generate these volumes. For startup data, that is thrown away during provisioning, these volumes offer a pod-level directory. Generic ephemeral volumes have the following qualities:
- supports both network-attached storage and local storage
- supports limiting the size of pods
- These volumes might include some starting data, depending on the storage driver employed and the parameter settings
- Depending on the storage driver that is being employed, generic ephemeral volumes may support snapshotting, cloning, monitoring storage capacity, and resizing. These features may be implemented in the volume
Empty dir
As soon as a pod initializes, this volume is generated and made accessible for whatever long the pod is non-terminal.
How to Use Generic Ephemeral Volumes?
Here is the step-by-step guide that you can follow for using ephemeral volumes in Kubernetes.
Step # 1: Start minikube
Using the tool minikube, you may run Kubernetes locally. Here is the command:
Step # 2: Enable Syntax Highlighting for YAML
In this step, we are going to create a configuration file with the following command.
The following is an example of what the YAML specification for a pod that is connected to a generic ephemeral volume and has 1 GiB of storage and numerous access modes would look like:
Step # 3: Create a Pod
Here, we are going to create a pod. This is done by executing the kubectl apply command, which then builds and modifies resources in a cluster.
Step # 4: View Pod Details
Now, we will find and view pod details by using a command that is mentioned below:
The command is executed successfully and the output is also mentioned above in which you can see the details of the pod.
Step # 5: Monitoring Ephemeral Volumes
A monitoring tool that can monitor storage utilization on the volumes where containers keep their data may be set up and it is feasible to do so. This volume is located in /var/lib/docker or /var/lib/origin. One tool of this kind that may be used to examine the number of resources being utilized on these drives is the /bin/df utility. Storage utilization and capacity may be shown in human-readable form by cluster administrators using the df -h tool.
The command for monitoring ephemeral volumes is attached below:
You can see the output above in which the Filesystem, size, Used, Avail, Use%, and mounted-on information is displayed.
Conclusion
For Kubernetes applications that handle transient data, ephemeral storage is an essential component. Regardless of where the persistent volume is located, Kubernetes provides ephemeral volumes to allow transient pods to cease and restart gracefully. Each Kubernetes node has ephemeral storage that is connected locally to RAM or writable storage. Pods may utilize this storage for caching, logging, and scratch space. This article discusses all these in detail.