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

110 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 **<NODO>** 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 <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**:
```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 <ID>
```
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 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
```