diff --git a/manual_k8s_node_cleanup.md b/manual_k8s_node_cleanup.md new file mode 100644 index 0000000..57d8595 --- /dev/null +++ b/manual_k8s_node_cleanup.md @@ -0,0 +1,109 @@ +# 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 +```