# Manual: Limpieza y re‑adhesión de nodos Kubernetes Este documento describe el ciclo completo para **visualizar**, **drenar/eliminar**, **limpiar** y **volver a unir** un nodo _control‑plane_ gestionado con **kubeadm**. > Todos los comandos necesitan privilegios `root` (`sudo`) y > reemplaza **** por el nombre real del nodo (p. ej. `srvfkvm4`). --- ## 1 · Comprobar los nodos del clúster ```bash kubectl get nodes -o wide ``` --- ## 2 · Drenar y eliminar el nodo ```bash kubectl drain --ignore-daemonsets --delete-emptydir-data kubectl delete node ``` ### 2 bis · ( Si el nodo queda en bucle _NotReady_ ) Eliminar el miembro antiguo en **etcd** 1. **Obtener el ID del miembro**: ```bash kubectl -n kube-system exec etcd-srvfkvm01 -- etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --write-out=table member list ``` Busca la línea con el nodo detenido y copia su **ID**. 2. **Eliminar el miembro**: ```bash kubectl -n kube-system exec etcd-srvfkvm01 -- etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key member remove ``` 3. **Limpiar el nodo afectado**: ```bash sudo systemctl stop kubelet containerd sudo kubeadm reset -f sudo rm -rf /etc/kubernetes/{manifests,pki} /var/lib/etcd sudo systemctl start containerd echo "192.168.4.4 srvfkvm4" | sudo tee -a /etc/hosts ``` --- ## 3 · Limpiar completamente la máquina ```bash sudo systemctl stop kubelet sudo systemctl stop containerd sudo rm -rf /var/lib/kubelet/ sudo rm -rf /etc/kubernetes sudo rm -rf /etc/cni/ sudo rm -rf /var/lib/etcd sudo reboot ``` --- ## 4 · Tras el reinicio – parar kubelet y unir de nuevo ```bash sudo systemctl stop kubelet sudo systemctl status kubelet ``` ```bash sudo kubeadm join 192.168.0.20:6443 --token rvz86n.c8rdb9ygtikrwnub --discovery-token-ca-cert-hash sha256:f925653dfb3d2b4697395a272e0b07cf4eb16b7ae5a2cc3b33aeab1f36fe7d13 --control-plane --certificate-key eeab98651b2f07f6ce53649b2cca1bf3c449d4fe6270ec0645219cd8c6795ca7 --apiserver-advertise-address=192.168.4.4 ``` --- ## 5 · Verificar que el nodo volvió a **Ready** ```bash kubectl get nodes -o wide kubectl -n kube-system get pods -o wide | grep etcd ``` --- ### Estructura recomendada del repositorio Git ``` k8s-node-cleanup-manual/ ├── manual_k8s_node_cleanup.md # ← este archivo └── .gitignore # opcional para descartar tmp ``` Instrucciones rápidas para publicar: ```bash git init git add manual_k8s_node_cleanup.md git commit -m "Manual de limpieza y re‑join de nodos Kubernetes" git remote add origin https://github.com//k8s-node-cleanup-manual.git git branch -M main git push -u origin main ```