Files
kubernetes/manual_k8s_node_cleanup.md
2025-07-30 10:12:20 +02:00

3.1 KiB
Raw Permalink Blame History

Manual: Limpieza y readhesión de nodos Kubernetes

Este documento describe el ciclo completo para visualizar, drenar/eliminar, limpiar y volver a unir un nodo controlplane 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

kubectl get nodes -o wide

2 · Drenar y eliminar el nodo

kubectl drain <NODO> --ignore-daemonsets --delete-emptydir-data
kubectl delete node <NODO>

2 bis · (Si el nodo queda en bucle NotReady)

Eliminar el miembro antiguo en etcd

  1. Obtener el ID del miembro:

    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:

    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 <ID>
    
  3. Limpiar el nodo afectado:

    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

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

sudo systemctl stop kubelet
sudo systemctl status kubelet
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

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:

git init
git add manual_k8s_node_cleanup.md
git commit -m "Manual de limpieza y rejoin de nodos Kubernetes"
git remote add origin https://github.com/<usuario>/k8s-node-cleanup-manual.git
git branch -M main
git push -u origin main