Welcome to Edera

Customer training for authorized users only

Only users with authorized email domains can access this portal.
Contact support@edera.dev if you need assistance.

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.yaml

This 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 protect

Expected 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 running

All 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-preinit

This 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_NAME

Multi-node variant:

List all nodes and select one:

kubectl get nodes --no-headers | awk '{print $1}' | cut -d'.' -f1

Then 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"]
EOF

The timestamp suffix ensures unique pod names for repeated testing.

Verify it’s running with Edera:

kubectl get pods -l runtimeClassName=edera --watch

Utility 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 -f

In 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 nodes

Pod resource usage:

kubectl top pods --all-namespaces --sort-by=cpu
kubectl top pods --all-namespaces --sort-by=memory

Quickly 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 edera

Less 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-preinit

Check status after restart:

systemctl status protect-daemon protect-cri protect-networking-daemon protect-orchestrator protect-storage-daemon protect-preinit

Use 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-cri

Disable (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-cri

Use 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 edera

Shows recent events related to Edera pods or RuntimeClass issues.

Script Repository

Want to contribute your own utilities or access community scripts? Contact Edera support:

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 →

Last updated on