Direct answer: at Azure Container Storage public list prices on 11 November 2026 (eastus, USD, excluding tax and discounts), deployments with a storage pool bill orchestration by pool capacity: 0–5 TiB free, and $0.006/GiB/month for the portion above 5 TiB. At 1 TiB=1,024 GiB: 5 TiB = $0; 10 TiB = 5,120 GiB×$0.006 = $30.72/month; 50 TiB = 46,080×$0.006 = $276.48; 100 TiB = 97,280×$0.006 = $583.68. That is only the orchestration fee: backing storage bills separately. Using P30 disks as an example: 10 TiB pool = 10×$135.17 + $30.72 = $1,382.42/month; 50 TiB = $7,034.98; 100 TiB = $14,100.68. Local NVMe looks free of disk charges but uses node-local disks and loses data when pods are deleted by default; Elastic SAN bills capacity/IOPS separately. The 5 TiB free allowance is generous; backing storage and pool capacity, not $0.006/GiB, drive the bill. Note: the pricing page lists fees by "Storage Pool Size"; this orchestration table applies to pool-based deployments. v2 local NVMe uses node disks without a storage pool—confirm whether an orchestration fee applies in the portal/bill.
This guide is for platform/SRE, Kubernetes admins, finance and procurement running stateful workloads on AKS, comparing Container Storage with Azure Disk/Elastic SAN/local NVMe, or budgeting a storage pool. It separates official prices, editorial calculations and exclusions, covering the free allowance, overage tier, pool capacity vs usage, P30/Elastic SAN/local NVMe backends, v1/v2 differences, hidden costs and a 90-day checklist. Prices come from the Container Storage pricing page, Azure Retail Prices API and Microsoft Learn introduction/FAQ (11 November 2026). This is not procurement advice.
(1) Orchestration is free for 0–5 TiB; above that it is $0.006/GiB/month on pool capacity, not actual usage. (2) Backing storage is the big line: a 10 TiB pool of P30 disks is about $1,351.70/month while orchestration is $30.72; 50 TiB is about $6,758.50 + $276.48. (3) Local NVMe has no disk charge but is ephemeral by default; for persistence/snapshots/replication use Azure Disk (v1) or Elastic SAN (v2) and accept their capacity/IOPS cost.
Orchestration: free to 5 TiB, $0.006/GiB beyond
The pricing page splits Free Tier (0–5 TiB) and Standard Tier (5+ TiB): orchestration is $0 for 0–5 TiB; additional provisioned storage pool capacity beyond 5 TiB is $0.006/GiB/month. It is based on pool capacity, not actual bytes written: a larger pool costs more even when empty. 5 TiB=5,120 GiB; a 10 TiB pool has 5,120 GiB above the free tier, or $30.72/month.
| Pool | GiB above 5 TiB | Orchestration/month | Note |
|---|---|---|---|
| 5 TiB | 0 | $0 | Free-tier ceiling |
| 10 TiB | 5,120 | $30.72 | Based on pool capacity |
| 20 TiB | 15,360 | $92.16 | Based on pool capacity |
| 50 TiB | 46,080 | $276.48 | Based on pool capacity |
| 100 TiB | 97,280 | $583.68 | Based on pool capacity |
Source: Container Storage pricing page (eastus, 11 November 2026). 1 TiB=1,024 GiB; orchestration only, excluding backing storage/tax/discounts; based on provisioned pool capacity; applies to pool-based deployments; v2 local NVMe has no pool—confirm fees in the portal/bill.
Adding P30: 10/50/100 TiB totals
Using Azure Disk P30 ($135.17/disk/month) as an example, assuming one P30 per TiB of pool capacity (excluding redundancy/overhead): 5 TiB = 5×$135.17 = $675.85; 10 TiB = $1,351.70 + $30.72 = $1,382.42; 20 TiB = $2,703.40 + $92.16 = $2,795.56; 50 TiB = $6,758.50 + $276.48 = $7,034.98; 100 TiB = $13,517 + $583.68 = $14,100.68. P30 is a 1 TiB-class Premium SSD; real pools may use more disks/RAID/replicas or Elastic SAN, changing the total.
| Pool | P30 disks | Disk/month | Orchestration/month | Total/month |
|---|---|---|---|---|
| 5 TiB | 5 | $675.85 | $0 | $675.85 |
| 10 TiB | 10 | $1,351.70 | $30.72 | $1,382.42 |
| 20 TiB | 20 | $2,703.40 | $92.16 | $2,795.56 |
| 50 TiB | 50 | $6,758.50 | $276.48 | $7,034.98 |
| 100 TiB | 100 | $13,517.00 | $583.68 | $14,100.68 |
Editorial calculation: P30 $135.17/disk/month (Retail API, eastus); 1 disk≈1 TiB assumption, excluding redundancy/RAID/snapshots; orchestration by pool capacity; excludes tax/discounts.
Backend choice: local NVMe, Azure Disk, Elastic SAN
Per Microsoft's introduction/FAQ: Container Storage v2 supports local NVMe and Elastic SAN; v1 supports Azure Disk, Ephemeral Disk (local NVMe/temp SSD) and Elastic SAN. Local NVMe is highest-performance and has no separate disk fee, but defaults to a generic ephemeral volume—data is not retained after pod deletion; adding an annotation enables a persistent volume, still node-bound, so node failure loses data. Azure Disk is persistent block storage billed per disk; Elastic SAN is network block storage with LRS/ZRS and snapshots/replication, billed by capacity/IOPS. Container Storage does not support RWX; Microsoft recommends Files/Blob CSI for that.
| Backend | Version | Persistence | Cost basis | Fit |
|---|---|---|---|---|
| Local NVMe | v2 | Ephemeral by default; annotation persists but node-bound | No separate disk fee; node cost | Cache/training/low-latency temp data |
| Azure Disk | v1 | Persistent block disk | Per disk/month (e.g., P30 135.17) | General stateful pods |
| Elastic SAN | v1/v2 | Persistent, LRS/ZRS, snapshots/replication | Capacity+IOPS | Databases/analytics/high throughput |
| Files/Blob CSI | — | RWX (Container Storage doesn't support) | Per file/object | Shared files/data lake |
| DACS (preview) | v2 | Read-only cache, not persistent volume | Blob+nodes | AI model/repeated data reads |
Sources: Container Storage introduction/FAQ (11 November 2026). v2 does not support Azure Disk; v1 supports Azure Disk/Ephemeral/Elastic SAN; no RWX; orchestration has no SLA, each backing storage has its own SLA.
Pool capacity vs usage: the easiest overpay
Orchestration bills provisioned pool capacity, not actual bytes written: a 100 TiB pool holding 10 TiB still bills orchestration on 100 TiB ($583.68), and the backing disks/Elastic SAN also bill on 100 TiB capacity. A pool that is too small limits dynamic volume expansion/snapshots. Size the pool at "current data + 30% headroom + peak snapshots", not a three-year guess; expand when needed. P30 count is not fixed 1:1 with pool capacity—it depends on redundancy/striping/backend; the 1 disk≈1 TiB assumption is illustrative.
| Item | Billing basis | Control |
|---|---|---|
| Orchestration | Pool capacity (above 5 TiB) | Expand on demand, don't overprovision |
| Azure Disk | Disks/capacity | Size by PVC/snapshots |
| Elastic SAN | Capacity+IOPS | Plan by throughput/capacity |
| Local NVMe | Node SKU | Choose nodes with NVMe |
| Snapshots/replication | Backend feature | Retention/frequency |
| AKS nodes | Node pools | Evaluate separately from storage |
Editorial summary: orchestration by pool capacity; backends bill by their own services; snapshots/replication/nodes are not estimated here.
Hidden costs and 90-day checklist
Seven hidden costs: pool capacity billed as provisioned, P30/Elastic SAN disk fees, snapshots/replication, AKS nodes (local NVMe needs NVMe nodes), cross-region/egress, DACS preview Blob/node costs, and the risk cost of local NVMe looking free while data is lost. 90 days: weeks 1–2 inventory stateful workloads, capacity/IOPS and RWX/snapshot needs; weeks 2–3 choose backend (local NVMe/Azure Disk/Elastic SAN) and version (v1/v2); weeks 3–4 price pool capacity + backend; weeks 4–6 test PVC/resize/snapshot at small scale; weeks 6–8 validate node failure/rescheduling and persistence; weeks 8–10 optimize pool capacity/disk count; weeks 10–12 reconcile the bill and set capacity/IOPS alerts.
| Scenario | First choice | Check first |
|---|---|---|
| Temp cache/training data | Local NVMe | Pod deletion/node failure loses data |
| General persistent volumes | Azure Disk (v1) | Disk fee/resize/snapshots |
| Database/high-throughput persistence | Elastic SAN (v2) | Capacity+IOPS/ZRS |
| Shared files/RWX | Files/Blob CSI | Container Storage doesn't support |
| ≤5 TiB pool | Any backend | Orchestration 0, backend extra |
| Large pool | Expand on demand | Billed by pool capacity, not usage |
| AI repeated reads | DACS preview | Read-only cache, not persistent |
Editorial summary, not a vendor recommendation; features/prices follow official pages; Elastic SAN cost is covered in its own article.
FAQ
How is Azure Container Storage billed?
Orchestration by storage pool capacity: 0–5 TiB free, $0.006/GiB/month above 5 TiB; backing Azure Disk/Elastic SAN/local NVMe bills separately. There is no separate per-volume/per-IO orchestration fee.
Is 5 TiB really free?
Orchestration is $0, but backing storage is not free: Azure Disk bills per disk, Elastic SAN by capacity/IOPS, local NVMe uses node disks (node cost). 5 TiB is an orchestration allowance, not free storage.
What does a 10 TiB pool cost per month?
Orchestration 5,120 GiB×$0.006=$30.72; with 10 P30 disks ($135.17 each)=$1,351.70, total $1,382.42/month. Elastic SAN bills capacity/IOPS separately.
Is it billed by pool capacity or usage?
Provisioned storage pool capacity. A 100 TiB pool holding 10 TiB still bills orchestration and backend on 100 TiB; expanding on demand saves money.
Why does local NVMe look free?
It uses AKS node local disks, with no separate disk fee; but it is ephemeral by default and node failure loses data. For persistence/snapshots/replication, use Azure Disk or Elastic SAN.
Does Container Storage support RWX?
No. Microsoft recommends Azure Files or Blob CSI for read-write-many; Container Storage targets block/local NVMe RWO scenarios.
Is there an SLA?
The orchestration layer itself has no SLA; Azure Disk/Elastic SAN have their own SLAs. For production SLAs, evaluate the backing storage, not just Container Storage.
How do I reduce cost?
Five steps: (1) size the pool at data + 30% headroom + peak snapshots, don't overprovision; (2) use the free orchestration tier up to 5 TiB; (3) use local NVMe for temp data and Disk/Elastic SAN for persistent data; (4) clean old snapshots/volumes; (5) compare Elastic SAN versus multiple P30 disks on capacity/IOPS unit price.
Research method and limitations
Official facts (pricing page, Retail API, Learn introduction/FAQ): 0–5 TiB free orchestration, $0.006/GiB/month above, by pool capacity; v1/v2 backend differences; local NVMe ephemeral by default; Azure Disk P30 $135.17/disk/month; Elastic SAN capacity/IOPS; no RWX; orchestration has no SLA. Editorial calculations: 1 TiB=1,024 GiB; 5/10/20/50/100 TiB orchestration; 1 P30≈1 TiB illustrative total; excludes redundancy/snapshots/nodes/tax.
Seven limitations: (1) eastus USD list prices only, excluding tax/contract discounts/regional differences; (2) pool capacity, disk count, backend and 1 disk≈1 TiB are editorial assumptions; (3) excludes RAID/replicas/snapshots/replication, AKS nodes, cross-region/egress, DACS preview and operations; (4) no real IOPS/latency/failover benchmark; (5) v1/v2 features/regions differ; v2 local NVMe has no storage pool, so confirm orchestration fees in the portal; (6) orchestration has no SLA—evaluate backend SLAs separately; (7) prices/billing basis change—recheck official pages and bills before purchase.
Sources and basis
- Microsoft Azure, Azure Container Storage Pricing: azure.microsoft.com/en-us/pricing/details/container-storage. 0–5 TiB free, $0.006/GiB/month above, by pool capacity. Accessed 11 November 2026.
- Azure Retail Prices API (P30, eastus): prices.azure.com/api/retail/prices. P30 $135.17/disk/month (illustrative backend). Accessed 11 November 2026.
- Microsoft Learn, Introduction to Azure Container Storage: container-storage-introduction. v1/v2 backends, local NVMe ephemeral volumes, Elastic SAN, DACS preview, no RWX. Accessed 11 November 2026.
- Microsoft Learn, Azure Container Storage FAQ: container-storage-faq. Version differences, AKS only, no RWX, no orchestration SLA. Accessed 11 November 2026.
Data cut-off 11 November 2026; prices/features follow Microsoft official pages and bills; this is not procurement, architecture or legal advice.