3.1 KiB
3.1 KiB
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
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
-
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 listBusca la línea con el nodo detenido y copia su ID.
-
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> -
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 re‑join 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