Skip to main content
Version: v3.9.0

Volumes

A volume stages a directory from the machine running potctl onto Edgelet nodes named in spec.agents. The record lives in CLI namespace config (~/.iofog/v3), not in the Controller API.

The short map is Config, secrets, and volumes. Fields are on Volume fields. Directory staging from the node side is also described in Volume distribution.

A volume mount publishes a Secret or ConfigMap. Attach applies to that object. A Volume lists its Edgelet nodes in its own spec.

When to use it​

Use a Volume when the files already exist as a directory on the operator machine and should be copied onto specific Edgelet nodes. Enroll those nodes first.

For remote nodes, spec.source must be a directory on the operator machine, and SSH must be configured on the node. A loopback host on the remote path fails: volume deployment is not supported for local agents on that path.

A local Edgelet node records the volume and uses the host filesystem directly. The CLI warns that the copy is unnecessary. If source and destination differ, it also warns about bind confusion.

What deploy does​

potctl deploy -f volume.yaml -n my-ecn

For each remote Edgelet node, deploy copies spec.source to spec.destination over SSH, then saves the volume in namespace config. There is no attach. Re-deploy updates that local record and copies again.

volume.yaml
apiVersion: datasance.com/v3
kind: Volume
metadata:
name: model-weights
namespace: my-ecn
spec:
name: model-weights
agents:
- edge-01
source: /data/models-src
destination: /var/lib/iofog/volumes/model-weights
permissions: "0755"

metadata.name and spec.name should match. The CLI sets spec.name from metadata when you deploy from a file.

How a microservice uses it​

Set type: volume and hostDestination to the volume name. scope is private or shared and applies only to this type. The mapping table is on Microservice fields.

mount.yaml
apiVersion: datasance.com/v3
kind: Microservice
metadata:
name: line-monitor/reader
spec:
container:
volumes:
- type: volume
hostDestination: model-weights
containerDestination: /models
accessMode: rw
scope: private

CLI​

potctl get volumes -n my-ecn
potctl describe volume model-weights -n my-ecn
potctl delete volume model-weights -n my-ecn

describe volume reads namespace config. delete volume removes staged data on the nodes (best effort per node) and drops the config entry. Deleting an Edgelet node removes that node from volume agent lists, or deletes a volume that only named that node.

Console​

Volumes are a CLI flow. The console chapter has no Volume screen.

Group 3See anything wrong with the document? Help us improve it!