Storage for Velero's Kubernetes backups: the year's bill with backups kept 30 days and one full restore
Prices checked
For a Kubernetes cluster with 1 TB in its volumes, backed up nightly by Velero and each backup kept for Velero's default 30 days, OVHcloud Object Storage Infrequent Access costs least over a year with one full restore, minimum storage periods included: $81.94, that is $6.49 a normal month and $10.55 the month you restore the cluster's volumes. 13 of the 18 vendors we price are ranked below on the same bill.
Velero deletes a month of packs every month. Each backup expires after Velero's default 30 days, and full maintenance deletes the packs only it used a day or more later (Velero documentation, How Velero Works; Backup Repository Configuration). A class that bills each object for longer charges the rest on every pack: at Wasabi, 90 days per pack add $8.57 to a $11.63 month, making it $20.20.
Only some of Velero's backups land in the bucket. By default Velero backs up volumes as disk snapshots, which stay with your
cloud's disks and are billed there. File-system backup (--default-volumes-to-fs-backup, with the node agent installed by
velero install --use-node-agent) and the CSI data mover (--snapshot-move-data) copy the volume data into a Kopia
repository in the bucket, one per namespace (Velero documentation, File System Backup;
CSI Snapshot Data Movement). That copy is what this page prices.
The cluster's own resources go to the bucket with every backup in a few small files.
Keeping backups 90 days instead? With --ttl 2160h0m0s the bucket holds about 2.8 TB, three months of
changes, and a 90-day minimum no longer bills deleted packs: OVHcloud Object Storage Infrequent Access then
costs least, $140.39 a year with one restore.
Wasabi moves from 10th to 8th.
If maintenance stops, nothing is deleted. Velero runs Kopia's maintenance every hour and a full one every
24 hours (Velero documentation, Repository Maintenance;
Backup Repository Configuration). An expired backup frees space only
once full maintenance completes, sometimes more than one run, so check that the maintenance job finishes: while it fails, every expired pack stays in the bucket and is billed.
To see it, describe the repository (kubectl -n velero describe backuprepositories): its status shows Last Maintenance Time
and, under Recent Maintenance, when each run started and finished and whether it succeeded.
Maintenance also rewrites partly used packs; how much depends on the backups you keep, so it is not in the bills here.
Before the first backup, replace the repository password. Velero creates a secret, velero-repo-credentials, that holds a default
password for every repository it creates. Put your own repository-password in it before the first file-system or data-mover backup:
changed afterwards, Velero can no longer open the older backups (Velero documentation, File System Backup).
Velero writes to Amazon S3 and other S3-compatible services through its AWS plugin, and to Google Cloud Storage and Azure Blob Storage through plugins of
their own; the S3-compatible services it lists, Oracle Cloud and DigitalOcean among them, are ones users report working, "not regularly tested by the Velero team"
(Velero documentation, Providers).
Pointing Velero at a service other than AWS. Install the AWS plugin release made for Velero 1.18
(velero/velero-plugin-for-aws:v1.14.4, the newest on ) and tell velero install where the bucket is:
--backup-location-config region=<region>,s3Url=https://<endpoint>, with the S3 endpoint from the service's own documentation,
plus s3ForcePathStyle="true" if that documentation asks for path-style addresses. The plugin adds a CRC32 checksum to every upload by default; its list of
known issues says Backblaze B2 needs checksumAlgorithm="" to avoid an XAmzContentSHA256Mismatch error, and that Google Cloud Storage should use
Google's own plugin instead (Velero plugins for AWS;
Backup Storage Location).
Storage for Velero backups, cheapest year first
One row per vendor: its cheapest class you can read at once, without restoring each file first, once its minimum storage period is paid. Ranked on 11 normal months and one month you restore the cluster's 1 TB of volumes.
| # | Offer | Where | Year with one restore | Normal month | Month you restore | Downloads | Checked |
|---|---|---|---|---|---|---|---|
| 1 | OVHcloud Object Storage Infrequent Access | France (Gravelines) | $81.94 | $6.49 | $10.55 | No download fees | |
| 2 | IDrive e2 | United States (Virginia) | $115.20 | $9.60 | $9.60 | Downloads free up to 3× what you store | |
| 3 | | United States (US West) | $132.60 | $11.05 | $11.05 | Downloads free up to 3× what you store | |
| 4 | | Distributed worldwide | $141.40 | $11.20 | $18.20 | Every GB downloaded is billed | |
| 5 | Tigris Archive Instant Retrieval Bills each pack for at least 90 days: deleting packs at about 31 days adds $4.40 a month. | Automatic location | $153.46 | $10.46 | $38.40 | No download fees | |
| 6 | DigitalOcean Spaces Cold Storage | United States (New York 3) | $185.16 | $15.43 | $15.43 | First 1 TB downloaded free each month | |
| 7 | Oracle OCI Object Storage Infrequent Access | United States (Ashburn) | $186.82 | $14.80 | $24.02 | First 10.2 TB downloaded free each month | |
| 8 | Azure Blob Storage Cold LRS Bills each pack for at least 90 days: deleting packs at about 31 days adds $3.96 a month. | United States (East US) | $227.12 | $9.86 | $118.66 | First 100 GB downloaded free each month | |
| 9 | Amazon S3 Glacier Instant Retrieval Bills each pack for at least 90 days: deleting packs at about 31 days adds $4.40 a month. | United States (Northern Virginia) | $234.78 | $10.96 | $114.22 | First 100 GB downloaded free each month | |
| 10 | | United States (US East 1) | $242.40 | $20.20 | $20.20 | Downloads free up to what you store | |
| 11 | Google Cloud Storage Coldline Bills each pack for at least 90 days: deleting packs at about 31 days adds $4.40 a month. | United States (South Carolina) | $248.70 | $10.86 | $129.24 | First 100 GB downloaded free each month | |
| 12 | Filebase Object Storage | Distributed worldwide | $268.20 | $22.35 | $22.35 | No download fees | |
| 13 | | Automatic location | $288.00 | $24.00 | $24.00 | No download fees |
Price your own backups Open it on the restore bill
The calculator opens on this workload, ranked as here on a year with one restore. It prices months in which you keep everything, so it leaves out the minimum-stay charge named under a row here, and its order can differ.
Vendors not on the list, and why
- Akamai Cloud Object Storage: it costs $384.00 a year before any minimum-stay charge, but its pricing names no minimum storage period, so what deleting packs about 31 days old costs is not confirmed. The page we read: Akamai Object Storage docs, Pricing.
- Hetzner Object Storage: it costs $160.56 a year before any minimum-stay charge, but its pricing names no minimum storage period, so what deleting packs about 31 days old costs is not confirmed. If it has none, it would rank 6th here. The page we read: Hetzner Object Storage docs, Overview.
- Scaleway Object Storage: Standard One Zone costs $182.91 a year before any minimum-stay charge, but its pricing names no minimum storage period, so what deleting packs about 31 days old costs is not confirmed. If it has none, it would rank 6th here. The page we read: Scaleway docs, Object Storage FAQ.
- Telnyx Cloud Storage: Regular Storage costs $106.56 a year before any minimum-stay charge, but its pricing names no minimum storage period, so what deleting packs about 31 days old costs is not confirmed. If it has none, it would rank 2nd here. The page we read: Telnyx Cloud Storage docs, Billing.
- Vultr Object Storage: Standard costs $345.60 a year before any minimum-stay charge, but its pricing names no minimum storage period, so what deleting packs about 31 days old costs is not confirmed. The page we read: Vultr docs, How is Object Storage billed?
How the bills are worked out
A Kubernetes cluster with 1 TB of data in its persistent volumes, backed up every night by Velero's file-system backup or CSI data mover, each backup kept for Velero's default 30 days. 20 GB of the data changes each day; Kopia uploads only what changed, so the bucket holds about 1.6 TB, stored as packs priced at 20 MB, which is 80,000 packs, and each month about 600 GB is uploaded as 30,000 packs and 600 GB of packs about 31 days old is deleted. Nothing is downloaded in a normal month; the month you restore, the cluster's 1 TB of volumes is downloaded over the internet.
Each bill comes from the vendor's own published rates through the same engine as the calculator, checked on the date beside it. Every month, the 600 GB of packs deleted at about 31 days old is billed for the days left of its class's minimum storage period, at that class's storage rate, as the vendor's own early-deletion rule says; a class whose minimum is 31 days or less adds nothing. Packs deleted later than that pay less, and nothing once they are past their class's minimum, so the charges here are the most they can be. The month you restore adds reading the volumes' packs back and downloading the cluster's 1 TB. Maintenance's rewrites of partly used packs are not counted: they depend on the backups you keep.
What Velero does to the bucket comes from Velero 1.18's own documentation, read : How Velero Works, File System Backup, CSI Snapshot Data Movement, Repository Maintenance, Backup Repository Configuration, Providers, Velero plugins for AWS, Backup Storage Location. The pack size is Kopia's, from Kopia's documentation, Architecture.
Related: the cheapest storage at 1, 10 and 50 TB · minimum storage periods explained · storage for a Kopia repository · storage for database backups kept 30 days · what a full restore costs · how long a restore takes · download fees by vendor