Mover la iGPU de lebron a kyrie¶
Procedimiento manual (requiere root en Proxmox luka). Forma parte de la
migración de Frigate; ver ADR 0006.
Desde 2026-10-31 el passthrough está en Terraform (
var.k3s_node_hostpci→hostpci0: mapping=igpuparakyrie). El resource mapping PCIigpu(Datacenter → Resource Mappings, path0000:00:02.0) se crea a mano una vez. Este runbook queda para el movimiento inicial entre VMs y para recuperar estado si se toca a mano; unapplyrevertirá cualquier cambio manual delhostpcidekyrie.Downtime: durante el cambio se paran
lebron(Home Assistant, Mosquitto, InfluxDB, Zigbee2MQTT y el resto de servicios) ykyrie(workloads del clúster). Planifica una ventana.
Antes de empezar¶
- Ventana acordada: se para
lebron(HA, Mosquitto, InfluxDB, Zigbee2MQTT…). - Acceso root a Proxmox: UI (
https://192.168.1.10:8006→ Shell) o SSH. - Comprobar el dispositivo en el host:
lspci -nn | grep -i "VGA.*Intel"
# Esperado: 00:02.0 VGA compatible controller [0300]: Intel Corporation
# TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49]
1. Quitar la iGPU de lebron¶
KEY=$(qm config 100 | sed -n 's/^\(hostpci[0-9]*\):.*/\1/p')
echo "$KEY"
qm shutdown 100 --timeout 180
# esperar hasta: qm status 100 → status: stopped
qm set 100 --delete "$KEY"
qm config 100 | grep hostpci # debe estar vacío
qm start 100
2. Añadirla a kyrie¶
Antes de parar kyrie, cordonear el nodo y esperar a que Longhorn y los pods
estén sanos:
kubectl cordon kyrie
kubectl get nodes,pods -A -o wide # esperar a que todo esté Running/Healthy
qm shutdown 9002 --timeout 180
# esperar hasta: qm status 9002 → status: stopped
qm set 9002 --hostpci0 0000:00:02.0
qm start 9002
Sin
x-vga: la iGPU se usa para cómputo (OpenVINO/VAAPI), no como consola.
3. Instalar el driver y verificar en kyrie¶
Las imágenes cloud de Ubuntu no traen linux-modules-extra, que es donde
vive el driver i915; sin él el PCI aparece pero no se crea /dev/dri. Lo
gestiona el rol Ansible igpu (k3s/ansible/roles/igpu): instala
linux-modules-extra-{{ ansible_kernel }} + linux-image-generic, carga i915
y espera a /dev/dri/renderD128. Se aplica al mergear (ansible-apply) o a
mano:
cd k3s/ansible
ansible-playbook playbooks/site.yml --tags igpu --limit kyrie
Verificar:
ssh ubuntu@192.168.20.11 'ls -l /dev/dri && lspci -nn | grep -i vga'
# Esperado: card0, renderD128 e Intel Iris Xe
kubectl uncordon kyrie
Rollback¶
qm shutdown 9002 --timeout 180
# esperar hasta: qm status 9002 → status: stopped
qm set 9002 --delete hostpci0
qm start 9002
qm shutdown 100 --timeout 180
# esperar hasta: qm status 100 → status: stopped
qm set 100 --hostpci0 0000:00:02.0
qm start 100
Para volver al Frigate legacy, además del cambio de PCI:
- Escalar el Deployment de Frigate a 0 (o borrar la Application
frigatede Argo CD). - Restaurar el bloque del servicio en
portainer-compose/hass/monitoring/docker-compose.ymldesde el historial de git de ese repo (se retiró al cerrar la migración). - Arrancar el contenedor legacy.