Saltar a contenido

➕ Añadir un nuevo nodo a un cluster de Kubernetes

En este artículo vamos a añadir un nuevo nodo (worker) a un cluster de Kubernetes ya existente. Partimos de un cluster previamente inicializado en el nodo control-plane.


🧱 Preparación del nodo

Antes de unir el nuevo nodo al cluster, es necesario preparar el sistema exactamente igual que en la instalación inicial.

👉 Sigue todos los pasos descritos en la guía anterior hasta antes de ejecutar kubeadm init:

📄 Instalar k8s

Esto incluye:

  • ⚙️ Configuración del sistema (swap, sysctl, módulos del kernel)
  • 🔌 Instalación de CNI plugins
  • 🐳 Instalación de CRI-O
  • ☸️ Instalación de kubelet, kubeadm y kubectl

⚠️ Importante: No ejecutes kubeadm init en este nodo.


🔑 Generar comando de unión (join)

Desde el nodo control-plane, generamos un token de acceso para unir nuevos nodos al cluster:

kubeadm token create --print-join-command

Este comando devuelve una instrucción completa similar a:

kubeadm join <CONTROL_PLANE_IP>:6443 --token <TOKEN> \
    --discovery-token-ca-cert-hash sha256:<HASH>

🧠 ¿Qué hace este comando?

  • 🔐 Token: autentica el nodo contra el cluster
  • 🧾 CA cert hash: valida la identidad del API Server
  • 🌐 Endpoint: dirección del control-plane

🚀 Unir el nodo al cluster

Ahora, en el nodo que queremos añadir, simplemente ejecutamos el comando generado:

kubeadm join <CONTROL_PLANE_IP>:6443 --token <TOKEN> \
    --discovery-token-ca-cert-hash sha256:<HASH>

Este proceso:

  • 📡 Conecta el nodo con el API Server
  • 📥 Descarga la configuración necesaria
  • ⚙️ Registra el nodo en el cluster
  • ▶️ Arranca los componentes necesarios (kubelet)

🔍 Verificación desde el control-plane

Volvemos al nodo principal y comprobamos que el nuevo nodo aparece correctamente:

kubectl get nodes

Deberíamos ver algo como:

NAME            STATUS   ROLES           AGE   VERSION
control-plane   Ready    control-plane   ...   ...
worker-node-1   Ready    <none>          ...   ...

⏳ Es posible que el nodo tarde unos segundos en aparecer como Ready.


🧪 Verificación de pods

También podemos comprobar que los pods del sistema se despliegan correctamente en el nuevo nodo:

kubectl get pods -A -o wide

Esto nos permitirá ver en qué nodo se está ejecutando cada pod.