🧠 Un poco de contexto: ¿qué es un “worker”?

Vale, ya tienes tu flamante cluster Kubernetes montado en un nodo. ¡Enhorabuena, sensei! 🥳
Pero ahora necesitas más músculo. Un solo servidor no da para tanto…
Aquí entran los workers: son los obreros, los soldados, los nodos que ejecutan tus aplicaciones en contenedores.
Sin ellos, tu cluster sería como un general sin ejército. Y eso, amigo mío, no mola.

Hoy te enseño, en plan “café en mano”, cómo unir workers a tu cluster de Kubernetes.


📦 Paso 1: Prepara los nodos workers (lo mismo que el master, pero sin montar el control plane)

Antes de unirlos, cada worker necesita estar listo para la acción.
Así que toca hacer prácticamente el mismo ritual de instalación que hiciste en el nodo principal:

Primero, actualizamos:

sudo apt update -y && sudo apt dist-upgrade -y

Instalamos las utilidades básicas:

sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common vim locate bash-completion command-not-found

🌉 Paso 2: Activamos IP Forwarding en los workers (¡también aquí, claro!)

Para que el tráfico fluya como en una autopista alemana, ejecutamos:

sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
EOF

Aplicamos los cambios:

sudo sysctl --system

🎯 ¿Por qué otra vez?
Porque cada nodo debe poder enviar/recibir tráfico entre pods. Si no, tu red será un poema triste.


📦 Paso 3: Instalamos containerd en los workers

Instalamos el motor de contenedores:

sudo apt install -y containerd

Creamos su configuración:

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml

Modificamos para usar systemd:

sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

Reiniciamos y activamos containerd:

sudo systemctl restart containerd
sudo systemctl enable containerd

💾 Paso 4: Apagamos el swap (again)

No, Kubernetes no perdona. Así que fuera swap también aquí:

sudo swapoff -a

Y lo desactivamos para siempre:

sudo sed -i.bak '/\bswap\b/ s/^/#/' /etc/fstab

🔥 Paso 5: Instalamos kubelet, kubeadm y kubectl en los workers

Sí, también tienes que instalar Kubernetes en cada nodo, pero no inicias el cluster esta vez.

Primero, bajamos las llaves:

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

Añadimos el repositorio:

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

Actualizamos e instalamos:

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

🎯 Importante:
Aquí NO usamos kubeadm init, que solo se usa en el nodo master.


🛸 Paso 6: Une el worker al cluster (¡el gran momento!)

Desde tu nodo master (donde hiciste kubeadm init), ejecuta este comando para obtener el token de unión:

kubeadm token create --print-join-command

Te devolverá algo tipo:

sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:1234567890abcdef...

Este comando es la llave mágica para que tus workers entren al club.

Copia ese comando completo y ejecútalo en cada nodo worker.


Inciso

Si has perdido el token o te ha caducado (caduca a las 24 horas) puedes volver a generar uno desde el control plane del articulo anterior, con el siguiente comando:

sudo kubeadm token create --print-join-command

Si necesitáis listar el que ya tenéis, y así verificáis si está caducado o no, usad este comando:

kubeadm token list

Os devolverá algo del estilo:

✅ Paso 7: Verifica que todo fue bien

De vuelta en el nodo master, comprueba que los workers han sido aceptados:

kubectl get nodes

Si ves algo como esto:

NAME            STATUS   ROLES           AGE     VERSION
master-node     Ready    control-plane   1h      v1.30.0
worker-node-01  Ready    <none>           2m      v1.30.0
worker-node-02  Ready    <none>           1m      v1.30.0

¡Felicidades, padawan! 🥳
¡Tu cluster Kubernetes ya tiene más fuerza que una estrella de la muerte recién terminada!


🧹 Resumen rápido:

Paso¿Qué hicimos?
Preparar sistemaActualizar e instalar utilidades
Habilitar IP ForwardingPara la red de pods
Instalar containerdMotor de contenedores
Desactivar swapObligatorio para Kubernetes
Instalar kubelet, kubeadm, kubectl¡Los básicos de Kubernetes!
Unirse al clusterEjecutar el join-command
VerificarConfirmar que están listos

📢 ¡Comenta y comparte!

¿Quieres que en el próximo artículo te enseñe cómo desplegar una primera app en tu nuevo cluster (y verla correr como Forrest Gump)? 🏃‍♂️🏃‍♀️
¡Cuéntamelo en los comentarios de Youtube!

Vídeo