Skip to content

Storage

Aether clusters come with persistent storage ready to use. You don’t pre-provision disks — just create a PersistentVolumeClaim and a volume is provisioned on demand.

Every cluster ships with two StorageClasses:

StorageClass Type Access Expandable
aether-block Block storage ReadWriteOnce — one node at a time Yes
aether-shared Shared filesystem ReadWriteMany — many nodes at once No

aether-block is the default, so a PVC with no storageClassName uses it.

List them on your cluster with:

Terminal window
kubectl get storageclass

The everyday choice: block devices for databases, queues, and anything else that wants a disk of its own. A volume attaches to one node at a time (ReadWriteOnce), and it can be expanded later by editing the PVC’s requested size.

With no storageClassName, a PVC uses it:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

A volume is provisioned automatically and bound to the claim. Mount it in a pod like any other PVC.

Deleting the PVC deletes the volume and its data. If you need the data to survive an accidental claim deletion, take your own backup or copy the data out before deleting — don’t rely on the claim sticking around.

When several pods — potentially on different nodes — need to read and write the same files, use aether-shared. It’s a shared filesystem, so it supports ReadWriteMany:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: shared-data
spec:
storageClassName: aether-shared
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi

Two things to know about it:

  • Provisioning is asynchronous. The claim stays Pending for a short while — typically a few tens of seconds — while Aether creates the backing share. That’s expected; the PVC binds once it’s ready.
  • Volumes can’t be expanded after creation. Size the claim for what you’ll need.

Volume snapshots are not available on tenant clusters today. A snapshot rate (€0.05 per GB per month) exists in the rate card, but there is nothing to meter: you cannot take a snapshot of an aether-block or aether-shared volume, and no snapshot line appears on your invoice. Plan your data protection around the section below rather than around snapshots.

This is the part to be clear about before you put data on a volume:

  • Aether backs up your cluster’s control-plane datastore — the Kubernetes state of the cluster — with continuous write-ahead-log archiving.
  • Aether does not back up your application data or your persistent volumes. Nothing on an aether-block or aether-shared volume is captured by the platform’s backups.
  • You own PV backups. Run the backup tool of your choice inside your cluster, or copy data out to storage you control.

Because deleting a PVC deletes its volume and its data, a backup you control is the only thing that survives an accidental deletion.

Persistent volumes are billed separately from the worker node’s own disk:

StorageClass Billed on Rate
aether-block Provisioned size €0.15 per GiB per month
aether-shared Used bytes €0.18 per GiB per month
  • Block storage: charged for the provisioned capacity, regardless of how much data is stored.
  • Shared storage: charged for actual usage observed at billing measurement time, because capacity is not hard-quota limited.

Prices exclude VAT; the VAT treatment is shown on your invoice. The worker VM’s own disk (sized per node pool) is priced separately as part of the node — see the Billing model.

Persistent volumes are measured in GiB (1 GiB = 1024³ bytes — the unit Kubernetes itself reports, and the unit your PVC’s 10Gi request is in). Node disk is the size you type per node in GB, and it is part of the node’s price rather than a persistent volume. Registry storage is per started GiB. Snapshot pricing is per GB, but snapshots are unavailable and unmetered.

Once every clock hour (UTC), at the same minute of each hour (which changes if the metering service restarts), Aether observes what exists and charges that hour at the monthly rate ÷ 730. There is no monthly maximum and no monthly average: the month’s charge is the sum of its hourly observations, so a volume that exists for a whole 31-day month costs 744/730 of the monthly rate — about 1.9 % more — and one that exists for a day costs about a thirtieth of it. The first observation for an hour is the one that counts, and a volume deleted at 10:40 is last billed for the hour whose observation still saw it.

  • aether-block — each volume’s provisioned size, rounded up to a whole GiB per volume, then summed. Expanding a PVC bills the new size from the next hourly observation. Because it is the provisioned size, a 100 GiB volume holding 2 GiB of data still costs 100 GiB.
  • aether-shared — the used bytes of all shared volumes in the cluster, summed and rounded up once per cluster per hour. Deleting data lowers the next observation.

Worked through:

  • A 100 GiB aether-block volume created at 09:10 and deleted at 15:50 the same day. Depending on where the sampler’s minute falls, it is observed six or seven times: seven gives 7 × 100 GiB × €0.15 ÷ 730 = €0.14, six gives €0.12.
  • A 100 GiB aether-block volume expanded to 200 GiB after 15 days of a 31-day month. (360 h × 100 + 384 h × 200) × €0.15 ÷ 730 = €23.18.
  • An aether-shared volume holding 50 GiB for 400 hours, then 10 GiB after a cleanup for the month’s remaining 344 hours. (400 × 50 + 344 × 10) × €0.18 ÷ 730 = €5.78.

See the Billing model for the same rules alongside registry storage.