Helpful Utilities
Debugging is faster with the right tools. These utilities help you diagnose Edera issues quickly.
Utility 1: Apply RuntimeClass from Hosted YAML
Need to quickly apply the Edera RuntimeClass? Use the hosted YAML:
kubectl apply -f https://public.edera.dev/kubernetes/runtime-class.yamlThis creates the Edera RuntimeClass directly from Edera’s public repository—no manual YAML needed.
Use case: Quick testing, disaster recovery, or when you just need the RuntimeClass applied immediately.
Utility 2: Verify All Edera Services
Check all six Edera services at once:
systemctl list-units --type=service | grep protectExpected output:
protect-cri.service loaded active running
protect-daemon.service loaded active running
protect-networking-daemon.service loaded active running
protect-orchestrator.service loaded active running
protect-storage-daemon.service loaded active running
protect-preinit.service loaded active runningAll services should show loaded active running.
Quick health check:
systemctl is-active protect-cri protect-daemon protect-networking-daemon protect-orchestrator protect-storage-daemon protect-preinitThis returns active for each service if all are running. Any other output indicates a problem.
Utility 3: Tailscale SSH Access
If you’re using Tailscale for secure node access, this helper extracts the node name and establishes SSH:
NODE_NAME=$(kubectl get nodes --no-headers | awk '{print $1}' | cut -d'.' -f1)
ssh root@$NODE_NAMEMulti-node variant:
List all nodes and select one:
kubectl get nodes --no-headers | awk '{print $1}' | cut -d'.' -f1Then SSH to the desired node:
ssh root@<node-name>Use case: Quickly accessing nodes in environments where Tailscale provides secure connectivity.
Utility 4: Rapid Pod Deployment
Deploy a test pod to verify Edera is working:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: edera-test-$(date +%s)
namespace: default
spec:
runtimeClassName: edera
containers:
- name: busybox
image: busybox
command: ["sleep", "3600"]
EOFThe timestamp suffix ensures unique pod names for repeated testing.
Verify it’s running with Edera:
kubectl get pods -l runtimeClassName=edera --watchUtility 5: Zone Monitoring
Monitor Edera zones in real-time:
watch -n 2 'protect zone list'This refreshes the zone list every 2 seconds, showing zones as they’re created or destroyed.
Xen hypervisor view:
watch -n 2 'xl list'Shows all Xen domains (Dom0 + Edera zones) with resource usage.
Utility 6: Log Tail for CRI
Tail CRI logs in real-time while testing:
journalctl -u protect-cri -fIn another terminal, create a test pod. The CRI logs show exactly what’s happening as the pod starts.
Filter for specific pod:
journalctl -u protect-cri -f | grep <pod-name>Utility 7: Quick Node Resource Check
See resource usage across all nodes:
kubectl top nodesPod resource usage:
kubectl top pods --all-namespaces --sort-by=cpu
kubectl top pods --all-namespaces --sort-by=memoryQuickly identify resource-hungry pods.
Utility 8: RuntimeClass Assignment Checker
Verify which pods are using the Edera RuntimeClass:
kubectl get pods --all-namespaces -o json | \
jq -r '.items[] | select(.spec.runtimeClassName=="edera") | "\(.metadata.namespace)/\(.metadata.name)"'Requires jq installed. Lists all pods across all namespaces that have runtimeClassName: edera.
Without jq:
kubectl get pods --all-namespaces -o wide | grep ederaLess precise but works without additional tools.
Utility 9: Batch Service Restart
Restart all Edera services at once:
systemctl restart protect-daemon protect-cri protect-networking-daemon protect-orchestrator protect-storage-daemon protect-preinitCheck status after restart:
systemctl status protect-daemon protect-cri protect-networking-daemon protect-orchestrator protect-storage-daemon protect-preinitUse case: After configuration changes or when multiple services are misbehaving.
Utility 10: CRI Debug Mode Toggle
Enable debug logging for troubleshooting, then disable after:
Enable:
sudo sed -i 's/RUST_LOG=.*/RUST_LOG=debug/' /usr/lib/systemd/system/protect-cri.service
sudo systemctl daemon-reload
sudo systemctl restart protect-criDisable (return to default):
sudo sed -i 's/RUST_LOG=.*/RUST_LOG=info/' /usr/lib/systemd/system/protect-cri.service
sudo systemctl daemon-reload
sudo systemctl restart protect-criUse case: Deep debugging of CRI issues. Remember to disable debug logging afterward to avoid log bloat.
Utility 11: Node Identification
Find which node a pod is running on:
kubectl get pod <pod-name> -n <namespace> -o jsonpath='{.spec.nodeName}'Get node IP:
NODE_NAME=$(kubectl get pod <pod-name> -n <namespace> -o jsonpath='{.spec.nodeName}')
kubectl get node $NODE_NAME -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}'Use case: Quickly jump to the right node for debugging.
Utility 12: Edera Events Filter
Filter Kubernetes events for Edera-related activity:
kubectl get events --all-namespaces --sort-by='.lastTimestamp' | grep -i ederaShows recent events related to Edera pods or RuntimeClass issues.
Script Repository
Want to contribute your own utilities or access community scripts? Contact Edera support:
- Email: support@edera.dev
- Subject: “Edera tool ideas”
We’re always looking for practical tools that make Edera debugging easier.
What’s Next?
With these utilities in your toolkit, you’re equipped to troubleshoot efficiently. Let’s wrap up with guidance on when to engage support.
Up next: Getting Support →
