Kubernetes object storage best practices

Like Kubernetes itself, the underlying object storage should be distributed, decoupled, declarative, and immutable.

Kubernetes object storage best practices
AvigatorPhotographer / Getty

Kubernetes is the most commonly used technology to deploy and orchestrate containerized workloads on distributed systems. However, Kubernetes is much more than container orchestration: It’s rapidly becoming a primary management and control point for enterprises. Why? Because of its ability to treat infrastructure as code.

Born out of a need to automate application deployment, scaling, and management, Kubernetes provides an infrastructure layer for distributed applications and services, making hardware available to these applications and services as a set of abstractions. These abstractions are then managed within the unified interface of Kubernetes.

As software controlled infrastructure, Kubernetes not only simplifies the deployment and management of applications and services but also serves to offset the risk presented by the underlying hardware. The working model eliminates hardware as a sticking point. When hardware fails, software is simply moved somewhere else. 

Applications run as microservices in containers, designed to be portable and independently deployable. Devops teams declare the desired state of workloads and Kubernetes ensures that the actual state matches the desired state, automatically troubleshooting and remediating failures, often by simply restarting an unresponsive container. This means containers must be immutable and stateless to prevent data loss or application corruption when crashing and restarting. In order to track state, immutable containers save data and configuration information outside of the container. 

Why Kubernetes needs object storage

Kubernetes achieves hyperscale by running portable containers that are decoupled from underlying hardware and software requirements. In order for a container to be truly portable, it can’t rely on local storage hardware, which by its very definition isn’t portable. This challenge is easily overcome by leveraging a fast data center network to decouple compute containers and local storage.      

While the requirements may seem straightforward, delivering against them is not. In fact, Kubernetes will be problematic for legacy storage formats like file and block that commonly run on SAN and NAS appliances. Those storage types rely on POSIX, a standard system call interface built for accessing data from local storage. POSIX hits a wall as data volumes, and the requirements of modern analytics applications to analyze that data, grow exponentially. Even locally, POSIX metadata contention and corruption can occur with too many concurrent parallel file operations. These are not behaviors of a hyperscale storage system.

By contrast, distributed object storage doesn’t face this limitation. By disallowing edits, object storage gains the benefits of sequential I/O and simpler locking mechanisms. When combined with a fast data center network, a distributed object storage system will outperform legacy POSIX-compliant file system solutions, especially when addressing concurrent parallel requests.

Devops teams now employ object storage almost exclusively when faced with the limitations and complexities of working with external file and block storage and Kubernetes. The best object storage, like Kubernetes itself, is distributed, decoupled, declarative, and immutable.

Kubernetes-native object storage is managed, secured, and automated through existing Kubernetes mechanisms and integrations, providing rich functionality and high efficiency for devops as it enables workloads across on-prem, multicloud, hybrid cloud, and public cloud environments.

Kubernetes-native object storage with MinIO

With all of this in mind, we saw a design opportunity to move MinIO inside the Kubernetes framework to simplify and automate provisioning, securing, and ongoing management of buckets and objects through Kubernetes. At the same time, we added a suite of features to simplify the adoption and deployment of Kubernetes-native object storage, especially for multitenant environments.

MinIO Kubernetes Operator encapsulates all critical devops tasks into software that can easily be consumed by enterprise IT to create and manage large object storage infrastructure independent of the underlying hardware. The MinIO Kubernetes Plugin extends the familiar kubectl command set to add a straightforward set of sub-commands to create, configure, and manage MinIO clusters on Kubernetes.

The MinIO Operator console makes Kubernetes object storage easier still. This graphical user interface is so simple that anyone in the organization can create, deploy, and manage object storage as a service. For years, devops teams have been begging IT teams for self-service object storage, and here it is.

minio operator MinIO

MinIO Operator console.

The MinIO Console builds on our mc CLI to provide the same simplicity and power in a browser-based GUI that feels intuitive for enterprise IT admins. A dashboard visualizes industry standard monitoring via Prometheus and the MinIO metrics endpoint.

minio console MinIO

MinIO Console.

We built the MinIO Console to provide IT admins with a streamlined, point-and-click experience for managing object storage through Kubernetes without having to understand Helm charts or YAML. The browser-based interface saves time, simplifying processes such as configuring and managing buckets, users and groups, and their policies and settings. New users and buckets can be added manually or with a few clicks through OpenID Connect and Active Directory or LDAP.

minio create bucket MinIO

Creating a storage bucket in MinIO Console.

In the true Kubernetes spirit of automation, we’ve recently added SUBNET Health to our SUBNET commercial engine and support platform. SUBNET Health is GUI-driven support software that automatically runs dozens of checks across drives, network, CPU, memory, operating systems, containers, and MinIO software components to make sure they are running optimally. Diagnostics can be shared with MinIO to tap into our 24/7/365 direct-to-engineer support. Resolving the root cause becomes magnitudes faster, saving admin time and increasing reliability and availability.

minio demo MinIO

MinIO SUBNET Health.

MinIO’s high-performance, Kubernetes-native object storage suite delivers a consistent experience for enterprise IT and devops teams across the full range of Kubernetes distributions and services including Red Hat OpenShift, VMware Tanzu, SUSE, HP Ezmeral, Azure AKS, Google GKE, Amazon EKS, and stock upstream Kubernetes. More than 58% of the Fortune 500 relies on MinIO in one form or another to provide the object storage layer in public, private, multi-, hybrid cloud and at the edge.  

Download MinIO and try it out for yourself. We have a tutorial, Simplifying Object Storage as a Service with Kubernetes and MinIO’s Operator, to help you get started.

Ugur Tigli is CTO at MinIO, where he oversees enterprise strategy and helps MinIO’s enterprise clients architect and deploy API-driven, cloud-native, scalable, enterprise-grade data infrastructure using MinIO. Ugur has almost two decades of experience building high performance data infrastructure for global financial institutions. Prior to MinIO, he was a technology leader at Bank of America, where he served as the senior vice president, global head of hardware engineering. Ugur joined BofA through the acquisition of Merrill Lynch where he was the vice president for storage engineering.

New Tech Forum provides a venue to explore and discuss emerging enterprise technology in unprecedented depth and breadth. The selection is subjective, based on our pick of the technologies we believe to be important and of greatest interest to InfoWorld readers. InfoWorld does not accept marketing collateral for publication and reserves the right to edit all contributed content. Send all inquiries to newtechforum@infoworld.com.

Copyright © 2021 IDG Communications, Inc.

InfoWorld Technology of the Year Awards 2023. Now open for entries!