Storage Analysis

Overview

Storage Analysis provides visibility into persistent volume usage and costs:

  • Storage costs - Monthly spending on persistent volumes
  • Utilization tracking - How much of each volume is actually used
  • Volume status - Bound, Released, Available, or Failed volumes
  • Storage classes - Distribution across gp2, gp3, io1, etc.
  • Right-sizing opportunities - Volumes with low utilization

Access: Select cluster (Clusters page or sidebar dropdown) → Storage

Why Analyze Storage? Storage costs are a significant portion of Kubernetes spending with common waste sources:

  • Released volumes - Volumes no longer bound to claims but still incurring costs
  • Low utilization - Volumes with low capacity usage
  • Expensive storage classes - Using premium storage when standard would suffice

Storage Metrics

Summary Cards:

  • Total Storage: Aggregate capacity across all volumes in GB
  • Used Storage: Actual data stored across all volumes
  • Avg Utilization: Average usage percentage across volumes
  • Total Cost: Monthly cost based on hourly rates
  • Volume Count: Number of persistent volumes

Timeframe Selection:

  • Current (real-time)
  • Historical data

Volume List

Table Columns:

  • Name - PV name (truncated if >30 chars)
  • Storage Class - gp2, gp3, io1, etc.
  • Namespace - Bound namespace (or "Not bound")
  • Claim - PVC name (or "Not bound")
  • Size - Allocated capacity in GB or MB
  • Status - Bound, Released, Available, Failed
  • Cost - Monthly and hourly rates

Status Types:

  • Bound - Volume attached to a PVC and in use
  • Released - Volume was bound but PVC deleted (still costing money)
  • Available - Volume created but never bound
  • Failed - Volume in error state

Filtering & Sorting

Available Filters:

  • Search by name, storage class, PVC, or namespace
  • Filter by storage class (gp2, gp3, io1, etc.)
  • Filter by status (Bound, Released, Available, Failed)
  • Filter by namespace

Sorting Options:

  • By size (allocated bytes)
  • By cost (hourly rate)
  • By usage (utilization percentage)
  • Ascending or descending order

Clear Filters: Shows active filter count with "Clear filters (N)" button


Storage Classes

Common Storage Classes:

gp3 (General Purpose SSD):

  • Cost: ~$0.08/GB/month
  • Use case: General workloads, recommended default

gp2 (Legacy General Purpose SSD):

  • Cost: ~$0.10/GB/month
  • 25% more expensive than gp3
  • Recommendation: Migrate to gp3

io1 (High IOPS SSD):

  • Cost: ~$0.125/GB/month + IOPS charges
  • Use case: High performance databases
  • Check if baseline gp3 (3K-16K IOPS) is sufficient

sc1 (Cold HDD):

  • Cost: ~$0.025/GB/month
  • Use case: Infrequent access, backups

Cost Optimization Strategies

1. Migrate gp2 → gp3:

  • Identify volumes using legacy gp2
  • Save 20% by migrating to gp3
  • No performance impact (gp3 often faster)

2. Review io1 Usage:

  • Check actual IOPS requirements
  • Consider downgrading to gp3 if <16K IOPS needed
  • Potential 20-50% cost reduction per volume

3. Right-size Low Utilization Volumes:

  • Focus on volumes with low capacity usage
  • Consider workload growth patterns before resizing
  • Note: Kubernetes doesn't support shrinking volumes directly

4. Clean Up Released Volumes:

  • Released status = paying for unused storage
  • Review reclaim policy before deletion
  • Check if data backup exists