añadido doc script limpieza
This commit is contained in:
@@ -15,6 +15,7 @@ Este repositorio contiene los **manifiestos, scripts y documentación** para des
|
|||||||
| `cephrook.md` | Instalación e integración de Ceph/Rook | [Ver](./cephrook.md) |
|
| `cephrook.md` | Instalación e integración de Ceph/Rook | [Ver](./cephrook.md) |
|
||||||
| `kubevirt.md` | Despliegue de KubeVirt y gestión de VMs | [Ver](./kubevirt.md) |
|
| `kubevirt.md` | Despliegue de KubeVirt y gestión de VMs | [Ver](./kubevirt.md) |
|
||||||
| `comprobaciones.md` | Checklist y pruebas tras cada paso crítico | [Ver](./comprobaciones.md) |
|
| `comprobaciones.md` | Checklist y pruebas tras cada paso crítico | [Ver](./comprobaciones.md) |
|
||||||
|
| `script_limpieza.md` | Como hacer un script para eliminar la configuracion de un nodo | [Ver](scrip_limpieza.md) |
|
||||||
| `coredns\readme.md` | Ejemplo de Multus: CoreDNS | [Ver](./coredns/readme.md) |
|
| `coredns\readme.md` | Ejemplo de Multus: CoreDNS | [Ver](./coredns/readme.md) |
|
||||||
| `storage\readme.md` | Ejemplo de recurso “class”: storage | [Ver](./storage/readme.md) |
|
| `storage\readme.md` | Ejemplo de recurso “class”: storage | [Ver](./storage/readme.md) |
|
||||||
|
|
||||||
|
|||||||
123
script_limpieza.md
Normal file
123
script_limpieza.md
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
#!/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
|
||||||
|
|
||||||
|
nano reset_nodo.sh
|
||||||
|
|
||||||
|
|
||||||
|
2. Dar permisos de ejecución:
|
||||||
|
|
||||||
|
chmod +x reset_nodo.sh
|
||||||
|
|
||||||
|
|
||||||
|
3. Ejecutar el script:
|
||||||
|
|
||||||
|
./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.
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user