## Manual: Reinicio completo (modo nuclear) de un nodo Kubernetes Este script permite realizar un reseteo completo de un nodo Kubernetes, eliminando su configuración, interfaces de red sobrantes, y preparándolo para un `kubeadm join` limpio. Es útil cuando el nodo ha quedado en estado inconsistente o se desea reutilizar desde cero. --- ### Contenido del script `reset_nodo.sh` ```bash #!/bin/bash echo "==============================" echo " K8s HARD RESET (modo nuclear)" echo "==============================" # Obtener nombre del nodo NODENAME=$(hostname) echo "Nodo detectado: $NODENAME" # Eliminar nodo del clúster echo "1. Eliminando el nodo del clúster..." kubectl delete node "$NODENAME" || echo "⚠️ No se pudo eliminar el nodo. ¿Está desconectado del clúster?" # Guardar kubeconfig local si no existe if [ ! -f "$HOME/.kube/config" ]; then echo "2. Guardando credenciales kubeconfig en ~/.kube/config..." mkdir -p "$HOME/.kube" sudo cp /etc/kubernetes/admin.conf "$HOME/.kube/config" 2>/dev/null || echo "⚠️ No se pudo copiar kubeconfig (¿es un nodo worker?)" sudo chown "$(id -u):$(id -g)" "$HOME/.kube/config" fi # Reset kubeadm echo "3. Ejecutando kubeadm reset..." sudo kubeadm reset -f # Parar servicios echo "4. Parando servicios kubelet y containerd..." sudo systemctl stop kubelet sudo systemctl stop containerd # Limpiar configuraciones echo "5. Borrando configuraciones CNI, kubelet, pods y logs..." sudo rm -rf /etc/cni/net.d/* sudo rm -rf /var/lib/cni/ sudo rm -rf /run/flannel/* sudo rm -rf /run/docker/netns/* sudo rm -rf /var/lib/kubelet/* sudo rm -rf /etc/kubernetes/* sudo rm -rf /var/log/pods/* sudo rm -rf /var/log/containers/* # Borrar interfaces sobrantes echo "6. Eliminando interfaces virtuales (ignora errores si no existen)..." sudo ip link delete flannel.1 2>/dev/null sudo ip link delete cni0 2>/dev/null sudo ip link delete docker0 2>/dev/null # Reiniciar servicios echo "7. Reiniciando containerd y kubelet..." sudo systemctl restart containerd sudo systemctl restart kubelet # Preguntar si desea reiniciar echo "======================================" read -p "¿Deseas reiniciar el nodo ahora? [s/N]: " confirm if [[ "$confirm" =~ ^[Ss]$ ]]; then echo "Reiniciando..." sudo reboot else echo "No se reiniciará. Ejecútalo manualmente cuando estés listo." echo " sudo reboot" fi echo "======================================" echo " RESET COMPLETADO " echo "======================================" ``` --- ### Cómo usar el script #### 1. Guardar el archivo: Guarda el contenido anterior en un archivo llamado `reset_nodo.sh` ```bash nano reset_nodo.sh ``` #### 2. Dar permisos de ejecución: ```bash chmod +x reset_nodo.sh ``` #### 3. Ejecutar el script: ```bash ./reset_nodo.sh ``` > Asegúrate de tener permisos sudo, ya que muchos comandos requieren privilegios de root. #### 4. Reinicio (opcional): El script preguntará al final si deseas reiniciar el nodo. Se recomienda decir que sí (`s`) para garantizar una limpieza total. --- ### ⚠️ Advertencia Este script elimina todos los datos y configuraciones de Kubernetes y CNI del nodo. Asegúrate de: * Eliminar el nodo primero del clúster (`kubectl delete node`) o dejar que el script lo haga. * Tener backup de cualquier dato o log importante. Ideal para casos de limpieza completa o reinstalación. **No recomendado** si solo necesitas reintegrar un nodo sano. En ese caso, usa `kubeadm reset` y `kubeadm join` directamente.