Storage¶
Each workspace gets a dedicated PersistentVolumeClaim (PVC) for durable storage that survives pod restarts and re-scheduling.
The workspace storage persists when a workspace is stopped.
Workspaces can also mount shared volumes — pre-existing PVCs that multiple workspaces reference. This enables collaboration patterns like shared datasets, team code repositories, or common model artifacts across workspaces.
Primary storage¶
Configured via spec.storage:
spec:
storage:
size: 20Gi
mountPath: /home/jovyan
storageClassName: gp3
Field |
Default |
Description |
|---|---|---|
|
Template default (typically |
Volume capacity |
|
|
Where the volume is mounted in the container |
|
Cluster default |
Kubernetes StorageClass to provision the volume |
The storage class name is immutable after creation — changing it requires recreating the workspace.
Template bounds¶
A template can constrain storage size:
spec:
primaryStorage:
defaultSize: 10Gi
minSize: 5Gi
maxSize: 100Gi
defaultStorageClassName: gp3
defaultMountPath: /home/jovyan
The admission webhook rejects workspaces whose storage size falls outside the bounds defined by the template.
Secondary volumes¶
Workspaces can mount additional pre-existing PVCs:
spec:
volumes:
- name: shared-data
persistentVolumeClaimName: team-shared-pvc
mountPath: /data
The volume name workspace-storage is reserved for the primary volume.
Templates can disallow secondary volumes with allowSecondaryStorages: false, or provide default volumes via defaultVolumes.