storage-operators

Block storage (Mayastor) and object storage (SeaweedFS) for Kubernetes workloads.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "storage-operators" with this command: npx skills add 5dlabs/cto/5dlabs-cto-storage-operators

Storage Operators

Block storage (Mayastor) and object storage (SeaweedFS) for Kubernetes workloads.

Storage Architecture

┌─────────────────────────────────────────────────────────────────┐ │ Storage Layer │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │ Mayastor │ │ SeaweedFS │ │ │ │ (Block Storage) │ │ (Object Storage) │ │ │ │ │ │ │ │ │ │ - NVMe optimized │ │ - S3 compatible │ │ │ │ - CSI driver │ │ - File uploads │ │ │ │ - Replicated │ │ - Backups │ │ │ └─────────────────────┘ └─────────────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ StorageClass: S3 Endpoint: │ │ mayastor seaweedfs-filer.seaweedfs:8333 │ │ │ └─────────────────────────────────────────────────────────────────┘

Mayastor (Block Storage)

NVMe-optimized distributed block storage via CSI.

StorageClass

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: mayastor provisioner: io.openebs.csi-mayastor parameters: protocol: nvmf repl: "2" # Replication factor reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true

PersistentVolumeClaim

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: data-volume namespace: myapp spec: accessModes: - ReadWriteOnce storageClassName: mayastor resources: requests: storage: 10Gi

Using in Deployments

apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: template: spec: containers: - name: app volumeMounts: - name: data mountPath: /data volumes: - name: data persistentVolumeClaim: claimName: data-volume

StatefulSet Storage

apiVersion: apps/v1 kind: StatefulSet metadata: name: database spec: volumeClaimTemplates: - metadata: name: data spec: accessModes: ["ReadWriteOnce"] storageClassName: mayastor resources: requests: storage: 20Gi

SeaweedFS (Object Storage)

S3-compatible object storage for files, uploads, and backups.

S3 Endpoint

http://seaweedfs-filer.seaweedfs.svc:8333

Create Bucket

Using AWS CLI

aws s3 mb s3://myapp-uploads
--endpoint-url http://seaweedfs-filer.seaweedfs.svc:8333

Using weed shell

kubectl exec -n seaweedfs seaweedfs-master-0 --
weed shell -master=localhost:9333 -filer=seaweedfs-filer:8888
-shell.command='s3.bucket.create -name myapp-uploads'

Application Configuration

apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: template: spec: containers: - name: app env: - name: S3_ENDPOINT value: "http://seaweedfs-filer.seaweedfs.svc:8333" - name: S3_BUCKET value: "myapp-uploads" - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: name: seaweedfs-s3-credentials key: access-key - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: seaweedfs-s3-credentials key: secret-key

SDK Usage (Node.js)

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({ endpoint: process.env.S3_ENDPOINT, region: "us-east-1", forcePathStyle: true, credentials: { accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, }, });

await s3.send(new PutObjectCommand({ Bucket: "myapp-uploads", Key: "files/document.pdf", Body: fileBuffer, }));

Storage Selection Guide

Use Case Storage Why

Database data Mayastor Low latency, consistent I/O

Redis/Valkey Mayastor Fast block access

File uploads SeaweedFS S3 API, scalable

Backups SeaweedFS Cost-effective, durable

Logs archive SeaweedFS Bulk storage

Application state Mayastor POSIX filesystem

Validation Commands

Check Mayastor status

kubectl get diskpools -n mayastor kubectl get volumes -n mayastor

Check PVCs

kubectl get pvc -A kubectl describe pvc <name> -n <namespace>

Check SeaweedFS

kubectl get pods -n seaweedfs aws s3 ls --endpoint-url http://localhost:8333 # with port-forward

Storage class

kubectl get storageclass

Troubleshooting

PVC stuck in Pending

Check events

kubectl describe pvc <name> -n <namespace>

Check Mayastor pools

kubectl get diskpools -n mayastor

Check CSI driver

kubectl get pods -n mayastor -l app=mayastor-csi

SeaweedFS connection issues

Check filer status

kubectl logs -n seaweedfs -l app=seaweedfs-filer

Test S3 connectivity

kubectl run -it --rm s3-test --image=amazon/aws-cli --
s3 ls --endpoint-url http://seaweedfs-filer.seaweedfs.svc:8333

Best Practices

  • Use Mayastor for databases - NVMe-optimized for low latency

  • Use SeaweedFS for files - S3 API is standard, scalable

  • Set appropriate replication - repl: 2 minimum for production

  • Monitor disk pools - Alert on low capacity

  • Backup critical data - Use SeaweedFS for backup storage

  • Size PVCs appropriately - Expansion is supported but disruptive

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

better-auth-expo

No summary provided by upstream source.

Repository SourceNeeds Review
General

elysia-llm-docs

No summary provided by upstream source.

Repository SourceNeeds Review
General

expo-patterns

No summary provided by upstream source.

Repository SourceNeeds Review