rune volume

Inspect persistent volumes — list, get, delete, detach, retry-provision, restore from snapshot. (Volumes are created via `rune cast`.)

rune volume <subcommand> [flags]
rune vol    <subcommand> [flags]    # short alias

A Volume is a namespaced unit of durable storage backed by a driver. See the storage concept for the lifecycle and how services consume them via claim / claimTemplate.

Subcommands

CommandPurpose
rune volume listList volumes in a namespace.
rune volume get <name>Show one volume's full status.
rune volume delete <name>Delete the row; reclaim policy decides the rest.
rune volume detach <name>Clear Bound state so a replacement can attach.
rune volume retry-provision <name>Re-drive a Failed/Stalled volume back to Pending.
rune volume restore <name>Provision a new volume from a snapshot.

Examples

# List in current namespace
rune volume list
 
# Across all namespaces
rune vol list -A
 
# Show one
rune volume get pgdata-postgres-0 -n prod -o yaml
 
# Apply from a spec — Volumes are created via `rune cast`, the same
# declarative path used for every other resource.
rune cast web-data.yaml
 
# Delete (reclaim policy applies — see storage concept)
rune volume delete web-data
 
# Volume stuck Bound after the instance vanished — break the bind
rune volume detach pgdata-postgres-1 -n prod
 
# Provisioning failed — fix the underlying problem, then re-drive
rune volume retry-provision pgdata-postgres-1 -n prod
 
# Restore from a snapshot into a new volume row
rune volume restore web-data-restored \
  --from-snapshot web-data-2025-11-15 \
  --snapshot-namespace prod \
  --storage-class local \
  -n prod

web-data.yaml

volume:
  name: web-data
  namespace: default
  storageClassName: local
  size: 5Gi
  accessMode: ReadWriteOnce
  reclaimPolicy: retain

For local-host, declare the host path on the volume itself:

volume:
  name: shared-cache
  namespace: default
  storageClassName: local-host
  size: 0           # informational — not enforced for hostPath
  accessMode: ReadWriteOnce
  parameters:
    hostPath: /mnt/rune/shared-cache

The path must sit under one of runefile.[storage].hostPathAllowlist, and must already exist unless [storage] allowCreateMissing = true.

Flags

list

FlagDefaultNotes
-n, --namespacedefaultTarget namespace.
-A, --all-namespacesfalseList across every namespace.
-o, --outputtabletable, json, yaml, name.
-l, --selectorLabel selector.
--field-selectorField selector (key=value,key=value).

get <name>

FlagDefaultNotes
-n, --namespacedefaultTarget namespace.
-o, --outputtabletable, json, yaml.

delete <name> / detach <name> / retry-provision <name>

FlagDefaultNotes
-n, --namespacedefaultTarget namespace.

restore <name>

FlagDefaultNotes
-n, --namespacedefaultNamespace for the new volume.
--from-snapshotRequired. Snapshot name to restore from.
--snapshot-namespace-nNamespace of the source snapshot. Defaults to -n.
--storage-classStorage class for the new volume. Defaults to source.

See also