Community post by Michael Cade

Introduction — what is Kubernetes Storage?

Kubernetes storage is a way to manage persistent data in a Kubernetes environment. Kubernetes storage can be used to store data that is independent of the container’s lifecycle. 

Kubernetes provides different types of storage, such as local storage, network-attached storage (NAS), storage area network (SAN), and object storage solutions. These storage methods can be divided into two categories: ephemeral storage and persistent storage.

Challenges of Kubernetes Storage:

Kubernetes storage can be complex due to several reasons: 

  1. Each type of Kubernetes storage solution has its own set of advantages and disadvantages, which can make it challenging to choose the right solution for your needs.
  2. Because it involves managing persistent data across multiple nodes in a cluster, Kubernetes storage needs to be highly available, resilient, and scalable to handle the demands of modern applications. This can be challenging, especially when dealing with complex storage architectures.
  3. Kubernetes storage can be complex due to the need to balance cost, performance, and availability, but it must be cost-effective while providing high performance and availability. Balancing these requirements can be challenging and requires careful planning and management.

The complexity continues with configuration. Storage has not been classed as easy for the last 15+ years, and we now have the complexity of Kubernetes and Storage colliding. But it is not all doom and gloom! There is a solution for troubleshooting some of these common issues — and this is the aim of our session at KubeCon. 

A Hopeful Outlook for Kubernetes Storage

Despite the challenges of Kubernetes storage, there have been significant improvements in recent years. Kubernetes now provides several features that make storage management easier and more efficient.

  1. The Container Storage Interface (CSI) is a standardized interface for connecting storage systems to Kubernetes that simplifies the process of integrating new storage systems into Kubernetes and makes it easier to manage and scale storage solutions.
  1. StatefulSets, which enable stateful applications to be deployed on Kubernetes, provide guarantees about the ordering and uniqueness of pods in a deployment, which makes it easier to manage and scale stateful applications.
  2. Persistent Volume (PV) and Persistent Volume Claim (PVC) objects simplify the process of managing persistent storage in Kubernetes. PVs and PVCs provide a way to decouple storage management from application management, which makes it easier to manage storage across multiple applications.

Conclusion

It’s clear that where there is storage, we have data and where there is data, we need to make sure it’s protected securely and safely for recovery. Kubernetes storage can be complex, but it’s getting better. With numerous new features — CSI, StatefulSets, and Persistent Volume (PV) and Persistent Volume Claim (PVC) objects – managing and scaling stateful applications in Kubernetes is easier and more efficient. As Kubernetes continues to evolve, we can expect even more improvements in Kubernetes storage, making it easier to manage storage in a Kubernetes environment.

For more information on Kubernetes storage background and troubleshooting please be sure to attend the KubeCon + CloudNativeCon Europe session on persistent data and troubleshooting. This session will be a workshop/tutorial session so that you can get hands-on with Kubernetes storage and troubleshoot some common issues. The session is called “Tutorial: What Went Wrong with My Persistent Data?” And will be on Thursday, April 20 • 14:30 – 16:00, it will be myself and my colleague Le Tran giving the talk.