Day 1: Operations
Context Pin
Pin kubectl to an explicit context — do not rely on current-context. For the homelab Omni target:
bash
kubectl --context omni-unraid-lab get nodes
kubectl --context omni-unraid-lab -n imp-system get pods
kubectl --context omni-unraid-lab get impvm -AAll runbook commands below assume kubectl --context omni-unraid-lab if your kubeconfig has multiple contexts. Alias it if needed:
bash
alias k='kubectl --context omni-unraid-lab'Daily Operations
- Track reconcile latency and error-rate trends.
- Review VM readiness/failure condition distribution.
- Check agent health and node coverage (
kubectl get nodes -l imp/enabled=true). - Verify network allocation health and saturation.
- Watch for
MemoryPressureifpressureLifecycle.enabled=true— largest VMs suspend first and never auto-resume.
Metrics
Imp exposes Prometheus-compatible metrics from operator and agent. Scrape via ServiceMonitor (enabled by default) or direct /metrics.
bash
kubectl -n imp-system get servicemonitor
kubectl -n imp-system get svc -l app.kubernetes.io/name=imp -o wide
curl -s http://<operator-pod-ip>:8080/metrics | grep imp_Key signals:
- VM state/phase metrics
- Scheduling/boot latency (p95/p99)
- Guest resource usage (CPU, memory, disk)
- Reconcile queue depth and error rates
See Architecture — Operational Notes and integrate with your Prometheus/Grafana stack.
Change Management
- Roll operator and agent separately when possible.
imp-runtimeisOnDelete— see Day 0 — Runtime OnDelete. Cordon/drain + delete pod to roll.- Use canary rollout on a subset of nodes (keep
imp/enabled=trueselector). - Watch condition/event deltas during rollout windows.
- Keep version compatibility notes for CRD changes (
v1alpha1may break; pin digests).
Capacity and Performance
- Watch queue depth and reconcile time p95/p99.
- Monitor per-node VM density and startup latency.
- Watch memory/CPU pressure on controller and agents.
- Track repeated retries that indicate hidden bottlenecks.
Troubleshooting Links
- Manual — Troubleshooting — triage flow,
RuntimeStartFailed,NetworkSetupFailed, FC_BIN, one-shot panic,409 Conflict - Manual — Day 0 Install — privileged namespace,
imp/enabled=true, digest pin,OnDelete,pressureLifecycle - Networking — Cilium IPAM — CiliumExternalWorkload, poolRefs
- Sandbox — Troubleshooting — sandbox-specific failure classes
Quick diagnostics:
bash
kubectl --context omni-unraid-lab describe impvm <name> -n <ns>
kubectl --context omni-unraid-lab logs -n imp-system deploy/imp-controller-manager -c manager --since=30m
kubectl --context omni-unraid-lab logs -n imp-system ds/imp-agent --since=30m
kubectl --context omni-unraid-lab get events -A --sort-by=.lastTimestamp | tail -n 100Backup and Recovery Inputs
- Retain cluster event history for incident windows.
- Preserve metric history for trend and regression analysis.
- Keep tested restore/runbook procedures for critical namespaces.
