Proxmox: nodos desechables con cloud-init
Mi homelab vive sobre Proxmox VE. La pregunta recurrente es: ¿VM o contenedor LXC? Para servicios sueltos y ligeros, LXC gana — arranca en segundos y consume poca RAM. Pero el corazón del lab, el clúster Kubernetes, corre sobre máquinas virtuales.
¿Por qué VMs para el clúster?
Un clúster RKE2 endurecido (perfil CIS, protect-kernel-defaults, cifrado de secretos) necesita su propio kernel y aislamiento real. Eso es territorio de VM: un LXC comparte kernel con el host y se queda corto para ese nivel de control. Cada nodo lleva además RAM fija (sin ballooning) y CPU host para rendimiento.
Plantilla + cloud-init = cero clics
El truco para que sea reproducible es no configurar nada a mano. Parto de una plantilla dorada (Debian cloud con el agente QEMU ya horneado) y, al clonarla, cloud-init inyecta usuario, claves SSH y red. Si un nodo se rompe, lo borro y clono otro en un minuto.
# clonar un nodo nuevo desde la plantilla dorada
qm clone 9000 203 --name rke2-server-03 --full
qm set 203 --sshkeys ~/.ssh/id_ed25519.pub --ipconfig0 ip=dhcp
qm set 203 --onboot 1 --balloon 0
qm start 203A partir de ahí, GitOps hace el resto: el nodo se une al clúster y Argo reconstruye los workloads. La infraestructura deja de ser algo que cuidas como una mascota y pasa a ser ganado: si uno enferma, lo reemplazas.
Un nodo que tardas un minuto en recrear es un nodo que no te da miedo perder.