Operations Runbook¶
This runbook outlines the standard operating procedures for managing the Edge LLM platform, performing maintenance, and executing health checks.
1. Pre-Change Checklist¶
Before performing any upgrades, configuration changes, or scaling operations:
- Verify Current State: Ensure all namespaces (
gpu-operator,llm-observability) are fully ready. - Snapshot Storage: If possible, take a filesystem snapshot of
/var/lib/rancher/k3s/storage(where PVCs are stored). - Check Resource Utilization: Ensure there is sufficient disk space and memory available on the node before initiating pulls for large images/models.
2. Health Check Commands¶
Use these commands to perform a comprehensive health check of the platform.
Kubernetes Node Health¶
Expected Output:Ready status.
GPU Operator Health¶
Expected Output: OnlyCompleted pods (like nvidia-cuda-validator) should appear. No CrashLoopBackOff or Error.
Verify device plugin allocation:
Expected Output:1 (or more, depending on your GPUs).
LLM Stack Health¶
Expected Output: All pods1/1 or 2/2 Running.
API Health¶
Expected Output: A JSON payload listing loaded models.3. Maintenance Workflow¶
Updating Helm Deployments¶
When modifying values.yaml or deploying an updated chart version:
helm upgrade llm-stack ./deploy/helm/llm-observability-stack -n llm-observability -f ./deploy/helm/llm-observability-stack/values.yaml -f ./deploy/helm/llm-observability-stack/profiles/gpu.yaml
Wait for rollout:
kubectl rollout status statefulset/ollama -n llm-observability
kubectl rollout status deployment/llm-stack-open-webui -n llm-observability
Restarting Services¶
If a service becomes unresponsive but the pod is technically "Running":
Restart Ollama:
Restart WebUI:
4. Rollback Procedures¶
If a Helm upgrade introduces instability:
- Identify Revision History:
- Rollback to Previous Revision:
- Verify Rollback:
Ensure pods recreate and reach
Runningstate.
5. End-of-Window Verification¶
After completing maintenance: 1. Run the Health Check commands (Section 2). 2. Load a small model via the API to verify inference paths are open.
curl -X POST http://localhost:11434/api/generate -d '{"model": "llama3.2:1b", "prompt": "Test", "stream": false}'
6. Incident Response¶
Symptom: OOMKilled Pods
- Action: Check dmesg -T | grep -i oom on host. Reduce model size or limit context length in Modelfile.
Symptom: Model Loading Extremely Slow
- Action: Verify nvidia.com/gpu is assigned to Ollama pod. Check kubectl describe pod ollama-0 -n llm-observability. If not, it's loading into CPU RAM instead of VRAM.
Symptom: Grafana Missing GPU Metrics
- Action: Restart DCGM exporter: kubectl delete pod -l app=nvidia-dcgm-exporter -n gpu-operator.