This section documents how objects created in ZEDEDA Cloud are translated into
configuration on an EVE-K edge node cluster (3-node k3s). All flows have been
traced live on device e418565d-9d93-47ee-b7ea-aba4c9c7e912.
Kubernetes is never in the config path.
ZEDEDA Cloud sends a protobuf DeviceConfig message to the device over HTTPS.
The EVE pillar agents (all running inside a single binary /opt/zededa/bin/zedbox)
receive this config and translate it into host-level state via a pubsub filesystem.
k3s is only touched at the very end when a workload is ready to launch.
Not all objects behave the same way:
| Object | Pushed to device when | Confirmed |
|---|---|---|
| Network Instance | Assigned to device – immediate | Yes (live) |
| App Instance | Assigned to device directly | Yes (live) |
| Datastore | App referencing it is assigned | Yes (live) |
| Image (ContentTree) | App referencing it is assigned | Yes (live) |
| Volume | App referencing it is assigned | Yes (live) |
Click each sub-page for the full confirmed deep dive.
All live config and status is readable as plain JSON on the EVE host:
# Watch all pubsub dirs in real time watch -n1 'echo "=NI="; ls /run/zedagent/NetworkInstanceConfig/; echo "=NIStatus="; ls /run/zedrouter/NetworkInstanceStatus/; echo "=DS="; ls /run/zedagent/DatastoreConfig/; echo "=CT="; ls /run/zedagent/ContentTreeConfig/; echo "=VOL="; ls /run/zedagent/VolumeConfig/; echo "=APP="; ls /run/zedagent/AppInstanceConfig/; echo "=DL="; ls /run/downloader/DownloaderStatus/; echo "=VS="; ls /run/volumemgr/VolumeStatus/; echo "=ANS="; ls /run/zedrouter/AppNetworkStatus/; echo "=DC="; ls /run/domainmgr/ 2>/dev/null | grep -v sock' # Watch k3s side watch -n2 'kubectl get vms,vmis,pvc,network-attachment-definitions -n eve-kube-app 2>/dev/null' # Watch EVE device log (clean output) tail -f /persist/newlog/collect/current.device.log | \ python3 -c " import sys, json for line in sys.stdin: try: o = json.loads(line.strip()) i = json.loads(o.get('content','{}')) print(f'[{i.get(\"time\",\"\")[:19]}] [{i.get(\"source\",\"?\")}] {i.get(\"level\",\"\").upper()}: {i.get(\"msg\",\"\")}') except: pass " | grep -iE 'domain|volume|kube|NAD|download|verify|zedmanager|zedkube|network|activate'