Sacar o reemplazar un nodo¶
Retira un worker de K3s (distribución ligera de Kubernetes) y miembro de Incus: primero se vacía, después se quita de cada clúster y por último del inventario. Para reemplazar un equipo, saca el viejo con este procedimiento y agrega el nuevo con Agregar un nodo.
Nodos que no se sacan con este procedimiento
deborahes el control plane de K3s y el DNS (BIND): sacarlo apaga el clúster. Hay que reconstruirlo (ver el runbook de bootstrap).invinciblees el leader de Incus y aloja la UI (interfaz de usuario) de Incus: antes hay que mover esos roles a otro nodo.- Quorum de Incus: el clúster tiene 3 miembros. Con 2, sigue funcionando pero ya no tolera otra caída. Agrega el reemplazo pronto.
En los ejemplos, el nodo a sacar es nolan.
1. Vaciar el nodo en K3s¶
Si el nodo aporta disco a Longhorn (node.longhorn.io/create-default-disk:
"true"), en la UI de Longhorn: Node → nolan → Edit → desactiva
Scheduling y marca Eviction Requested. Espera a que sus réplicas se
muevan a otros nodos antes de seguir.
2. Vaciar el nodo en Incus¶
Desde cualquier nodo del clúster Incus:
sudo incus list --all-projects --format csv --columns nL | grep nolan # instancias en nolan
sudo incus cluster evacuate nolan # las mueve o detiene
3. Quitarlo de K3s¶
kubectl delete node nolan
cd ansible
ansible-playbook -i inventory.ini playbook-uninstall-k3s.yml --limit nolan
En un worker, el playbook solo quita el agent (nunca toca el control plane).
4. Quitarlo de Incus¶
Desde el leader (invincible):
5. Inventario y DNS¶
- Borra la línea del nodo en
inventory.ini(grupo de arquitectura yk3s_agent) y su archivohost_vars/nolan.yml. - Si estaba en
reboot_schedule(group_vars/incus_cluster/k3s_install.yml), quítalo de ahí. - Regenera el DNS para quitar
nolan.mco.local:
Verificar¶
kubectl get nodes # nolan ya no aparece
ssh amaceo@192.168.20.6 sudo incus cluster list # nolan ya no aparece
dig +short nolan.mco.local @192.168.20.5 # sin respuesta
En Longhorn, los volúmenes tienen que quedar Healthy (sin réplicas en
nolan).
Si falla¶
| Síntoma | Revisar |
|---|---|
drain se queda esperando |
Un pod con PodDisruptionBudget o sin controlador; revisa con kubectl get pods -A -o wide \| grep nolan |
| Volúmenes de Longhorn Degraded | No esperaste la evacuación de réplicas (paso 1); vuelve a agregar el disco o espera a que Longhorn reconstruya |
incus cluster remove se niega |
Quedan instancias en el nodo: repite incus cluster evacuate nolan |
| El nodo ya no enciende | Salta los pasos que requieren conectarse a él y usa sudo incus cluster remove --force nolan |