All posts

Developer Friendly Kubernetes Storage

Developer Friendly Kubernetes Storage

Most developers don’t love managing infrastructure — including storage infrastructure. One of the great things about Kubernetes is the ability to simplify infrastructure management so that developers can focus on creating applications and let Kubernetes handle orchestration.

Kubernetes does not natively manage storage infrastructure — but using MinIO and Kubernetes together can help provide the storage that applications need with the declarative syntax, scaling and resource optimization that Kubernetes excels at for compute.

MinIO doesn’t create persistent storage for Kubernetes clusters, but rather provides the object storage applications need. Unlike other object storage solutions, it was purpose-built for Kubernetes. Here’s how MinIO and Kubernetes work together.

Built for Kubernetes

There are three ways to run MinIO with Kubernetes.

The first is to simply run it as a deployment — you do this if you want to manually control how the storage is allocated. The second is to run a stateful set, where you use Kubernetes to provision storage. The third way to run MinIO with Kubernetes is through the MinIO Operator.

The MinIO Operator follows Kubernetes’ design pattern. It allows developers to control MinIO through the Kubernetes interface using declarative syntax. Just say, “I need a 10-node MinIO instance,” and the operator will take care of creating and managing the instance.

The Minio Operator is the easiest way to use MinIO and Kubernetes together for two reasons. First, it allows developers who don’t know how to manage storage to leverage Kubernetes’ automation tools and declarative syntax to manage storage without needing to either ask a storage admin for assistance or learn details of storage administration themselves. Secondly, it simplifies developers’ workflows by allowing them to manage MinIO from the Kubernetes dashboard.

Using MinIO and Kubernetes together allows Kubernetes to take over the storage orchestration, from provisioning to volume placement to disk rebooting. Most developers don’t have experience handling these storage management tasks — but with the combination of MinIO and Kubernetes, they can rely on Kubernetes to automatically handle the infrastructure management.

MinIO connects with Kubernetes through APIs rather than through the Container Storage Interface, allowing for better dynamic orchestration of storage nodes.

Consistency across appliances and environments

Using MinIO is a way to create a consistent storage experience, regardless of the type of hardware in the data center. It can also create consistent storage in a hybrid cloud or multi cloud environment. MinIO doesn’t care if you’re using cheap, old slow drives or the fastest storage appliances on the market — or a combination of both, with appliances from various vendors. MinIO will operate on top of that storage infrastructure and manage volumes in a distributed manner. Doing so provides consistency — the same experience regardless of the appliance — while simultaneously improving overall performance numbers by running in a distributed manner.

S3 Compatibility

Kubernetes needs S3-compatible storage. In fact, for storage to truly be cloud-native, it must be S3-compatible. If Kubernetes is running on AWS, connecting the application to S3 storage isn’t a problem. But if it’s running in another cloud provider, in a private cloud or across multiple clouds, Kubernetes needs an S3-compatible object storage to connect with — and MinIO is the only option.

Resource Optimization

As an application, MinIO is very lightweight — it only needs storage infrastructure to work. It does not eat up memory or CPU. If you’re building a private cloud, you want CPU and memory intensive applications to get the resources they need while using locally attached volumes on your servers for storage. This lets each application take advantage of the resources that each server is optimized for. Some servers might be optimized for CPU while others are optimized for storage. These servers can be used by the same Kubernetes cluster and easily orchestrated through Kubernetes.

Because MinIO is so lightweight, it’s ideal for deploying mixed workloads that use resources from servers that have been optimized differently.

Scaling with MinIO

Scalability is another reason companies use Kubernetes. When using MinIO and Kubernetes together, Kubernetes can manage scaling not only the compute resources, but also the storage resources, while still ensuring that resource usage is optimized.

Unliked traditional file and block storage systems, object storage was designed from the ground up to work at petabyte scale — the amount most modern enterprises are handling. Object storage was also designed to run in a distributed manner, so it fits Kubernetes’ architecture pattern. Because there’s no centralized metadata server, it’s simple to keep adding more volumes, more nodes and more clusters indefinitely, without developing a bottleneck around a central metadata server.

The Takeaways

MinIO is not the only object storage solution that can connect with Kubernetes. Many appliance vendors have plugins to connect hardware with Kubernetes for on-premises deployments. Further, Kubernetes can connect directly with object storage solutions from AWS, Google and Azure.

Only MinIO, however, provides developers the ability to manage storage with Kubernetes, in a way that speaks Kubernetes language. MinIO is also the only option that offers consistency and portability across environments.
Ready to try out MinIO and Kubernetes together? See for yourself by downloading MinIO now. As a 100% open source solution, you will get our  latest and greatest with nothing held back. If you want to do a little research first, check out our Docs or hang around our Slack Channel to see what’s getting people's attention.