Skip to main content
πŸŽ“ Claude Code Masterclass Learn AI-assisted development on Udemy β€” plus the companion book on Leanpub & Amazon. Start Learning
MinIO: S3-Compatible Object Storage on Kubernetes
Platform Engineering

MinIO: S3-Compatible Object Storage on Kubernetes

Run MinIO for S3-compatible storage β€” AI/ML data lakes, backup targets, Thanos/Loki backends, and multi-tenant enterprise deployments.

LB
Luca Berton
Β· 1 min read

What Is MinIO?

MinIO is a high-performance, S3-compatible object storage system. Use it as the storage backend for Thanos, Loki, MLflow, Velero, Harbor, and any S3-compatible workload β€” on-prem or in Kubernetes.

Why Run Your Own S3?

ScenarioAWS S3MinIO
Data sovereignty❌ AWS regions onlyβœ… Your datacenter
Egress costs$0.09/GB$0
GPU training dataHigh latencyLocal NVMe speed
Air-gappedβŒβœ…
Cost at 100TB~$2,300/moHardware amortized

Kubernetes Deployment (Operator)

# Install MinIO Operator
kubectl krew install minio
kubectl minio init

# Create a tenant
kubectl minio tenant create ml-storage \
  --servers 4 \
  --volumes 16 \
  --capacity 10Ti \
  --namespace minio-tenant \
  --storage-class local-nvme

Tenant YAML

apiVersion: minio.min.io/v2
kind: Tenant
metadata:
  name: production
  namespace: minio
spec:
  pools:
    - servers: 4
      volumesPerServer: 4
      volumeClaimTemplate:
        spec:
          storageClassName: local-nvme
          resources:
            requests:
              storage: 1Ti
  features:
    encryption:
      enabled: true
    bucketDNS: true
  prometheusOperator: true

Use Cases

1. Thanos Long-Term Metrics

# thanos objstore config
type: S3
config:
  bucket: thanos-metrics
  endpoint: minio.minio.svc:9000
  access_key: ${MINIO_ACCESS_KEY}
  secret_key: ${MINIO_SECRET_KEY}
  insecure: true  # Internal cluster traffic

2. Velero Backup Target

velero install \
  --provider aws \
  --plugins velero/velero-plugin-for-aws:v1.10.0 \
  --bucket velero-backups \
  --backup-location-config \
    region=minio,s3ForcePathStyle=true,s3Url=http://minio.minio.svc:9000

3. ML Training Data Lake

import boto3

s3 = boto3.client('s3',
    endpoint_url='http://minio.minio.svc:9000',
    aws_access_key_id='minioadmin',
    aws_secret_access_key='minioadmin'
)

# Upload training dataset
s3.upload_file('dataset.parquet', 'ml-data', 'training/v3/dataset.parquet')

Performance

MinIO is designed for throughput:

ConfigurationReadWrite
4 nodes, NVMe35 GB/s20 GB/s
8 nodes, NVMe70 GB/s40 GB/s
16 nodes, NVMe140 GB/s80 GB/s

For AI/ML workloads, local MinIO eliminates the S3 egress bottleneck entirely.

Erasure Coding

MinIO uses erasure coding (not replication) β€” survive disk/node failures with minimal overhead:

4 servers Γ— 4 drives = 16 drives total
EC:4 = survive loss of 4 drives (any combination)
Overhead: 33% (vs 100% for replication)
Usable: 67% of raw capacity

Free 30-min AI & Cloud consultation

Book Now