# Añadir nodos de trabajo Linux

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

Esta página explica cómo añadir nodos de trabajo Linux a un clúster de kubeadm.

## Antes de empezar

* Para cada nodo de trabajo a añadir al clúster, debes tener instalados los componentes necesarios según
[Instalando kubeadm](/docs/setup/production-environment/tools/kubeadm/install-kubeadm/), como
kubeadm, el kubelet y un <a class='glossary-tooltip' title='El Container Runtime, entorno de ejecución de un contenedor, es el software responsable de ejecutar contenedores.' data-bs-toggle='tooltip' data-bs-placement='top' href='/es/docs/setup/production-environment/container-runtimes' target='_blank' aria-label='runtime de contenedores'>runtime de contenedores</a>.
* Dispones de un clúster de kubeadm en ejecución, creado con `kubeadm init` y siguiendo los pasos
del documento [Creando un clúster con kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/).
* Dispones de acceso de superusuario al nodo.

<!-- steps -->

## Añadiendo nodos de trabajo Linux

Para añadir nuevos nodos de trabajo Linux a tu clúster, haz lo siguiente en cada máquina:

1. Conéctate a la máquina usando SSH u otro método.
1. Ejecuta el comando que mostró `kubeadm init` en su salida. Por ejemplo:

  ```bash
  sudo kubeadm join --token <token> <host-del-plano-de-control>:<puerto-del-plano-de-control> --discovery-token-ca-cert-hash sha256:<hash>
  ```

### Información adicional sobre kubeadm join


<div class="alert alert-info" role="note"><h4 class="alert-heading">Nota:</h4>Para especificar una tupla IPv6, en <code>&lt;host-del-plano-de-control&gt;:&lt;puerto-del-plano-de-control&gt;</code> debes escribir la dirección IPv6 entre corchetes, por ejemplo: <code>[2001:db8::101]:2073</code>.</div>


Si no tienes el token, puedes obtenerlo ejecutando el siguiente comando en el nodo controlador:

```bash
# Ejecuta esto en un nodo controlador
sudo kubeadm token list
```

La salida es similar a esta:

```console
TOKEN                    TTL  EXPIRES              USAGES           DESCRIPTION            EXTRA GROUPS
8ewj1p.9r9hcjoqgajrj4gi  23h  2018-06-12T02:51:28Z authentication,  The default bootstrap  system:
                                                   signing          token generated by     bootstrappers:
                                                                    'kubeadm init'.        kubeadm:
                                                                                           default-node-token
```

Por defecto, los tokens para añadir nodos expiran a las 24 horas. Si vas a añadir un nodo al clúster
después de que el token actual haya expirado, puedes crear un token nuevo ejecutando el siguiente
comando en el nodo controlador:

```bash
# Ejecuta esto en un nodo controlador
sudo kubeadm token create
```

La salida es similar a esta:

```console
5didvk.d09sbcov8ph2amjw
```

Para imprimir un comando `kubeadm join` generando a la vez un nuevo token, puedes usar:

```bash
sudo kubeadm token create --print-join-command
```

Si no tienes el valor de `--discovery-token-ca-cert-hash`, puedes obtenerlo ejecutando los
siguientes comandos en el nodo controlador:

```bash
# Ejecuta esto en un nodo controlador
sudo cat /etc/kubernetes/pki/ca.crt | openssl x509 -pubkey  | openssl rsa -pubin -outform der 2>/dev/null | \
   openssl dgst -sha256 -hex | sed 's/^.* //'
```

La salida es similar a:

```console
8cb2de97839780a412b93877f8507ad6c94f73add17d5d7058e91741c9d5ec78
```

La salida del comando `kubeadm join` debería parecerse a esto:

```
[preflight] Running pre-flight checks

... (log output of join workflow) ...

Node join complete:
* Certificate signing request sent to control-plane and response
  received.
* Kubelet informed of new secure connection details.

Run 'kubectl get nodes' on control-plane to see this machine join.
```

Unos segundos más tarde, deberías ver este nodo en la salida de `kubectl get nodes`
(por ejemplo, ejecutando `kubectl` en un nodo controlador).


<div class="alert alert-info" role="note"><h4 class="alert-heading">Nota:</h4>Como los nodos del clúster normalmente se inicializan de forma secuencial, es probable que todos los
Pods del CoreDNS se ejecuten en el nodo controlador. Para proporcionar una mayor
disponibilidad, reequilibra los Pods del CoreDNS con
<code>kubectl -n kube-system rollout restart deployment coredns</code> después de haber añadido al menos un nuevo nodo.</div>


## ¿Qué sigue?

* Consulta cómo [añadir nodos de trabajo Windows](/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes/).
