diff --git a/cluster_init.md b/cluster_init.md index c1e465f..c1e10d0 100644 --- a/cluster_init.md +++ b/cluster_init.md @@ -357,11 +357,13 @@ kubeadm init phase upload-certs --upload-certs ``` Si copiamos ambos resultados y lo unimos en un solo comando join conseguiremos el objetivo. Explicado más abajo. -## d) Instala la red de pods (Flannel) usando la VLAN interna del clúster +# d) Instala la red de pods (Flannel) usando la VLAN interna del clúster -Kubernetes solo define la infraestructura; necesitas un complemento de red (CNI) para que los pods puedan comunicarse entre sí. Flannel es la opción más sencilla y compatible, y puedes configurarla para usar una interfaz/VLAN específica para el tráfico overlay (muy recomendable si segmentas redes en tu clúster). +Kubernetes solo define la infraestructura; necesitas un complemento de red (CNI) para que los pods puedan comunicarse entre sí. **Flannel** es la opción más sencilla y compatible, y puedes configurarla para usar una interfaz/VLAN específica para el tráfico overlay (muy recomendable si segmentas redes en tu clúster). -### **¡ATENCIÓN! CNI Y PLUGINS:** +--- + +## ¡ATENCIÓN! CNI Y PLUGINS Antes de aplicar Flannel, **asegúrate de tener los plugins CNI instalados en `/opt/cni/bin/`** (en SUSE esto NO siempre lo hace el paquete de Flannel): @@ -371,6 +373,8 @@ ARCH="amd64" sudo curl -Lo cni-plugins.tgz https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz sudo mkdir -p /opt/cni/bin sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz +sudo chmod +x /opt/cni/bin/* +sudo chown root:root /opt/cni/bin/* ``` Verifica que existen al menos: @@ -379,37 +383,74 @@ Verifica que existen al menos: * `/opt/cni/bin/flannel` * `/opt/cni/bin/bridge` y otros -Corrige permisos si hace falta: +--- + +## Instalación de Flannel especificando la interfaz de la VLAN de clúster + +**Descarga el manifiesto de Flannel:** ```bash -sudo chmod +x /opt/cni/bin/* -sudo chown root:root /opt/cni/bin/* +wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml ``` -**Luego sí aplica Flannel:** +**Edita el manifiesto para forzar la interfaz de red correcta:** + +* Abre `kube-flannel.yml` +* Busca el bloque `args:` bajo el contenedor principal. +* Añade la línea siguiente (ajusta el nombre según tu interfaz real, por ejemplo, `vlan40`, `bond0.40`, etc.): + +```yaml + - --iface=vlan40 # <--- Pon aquí el nombre de la interfaz con IP 192.168.4.x +``` + +### Ejemplo del bloque completo: + +```yaml + containers: + - args: + - --ip-masq + - --kube-subnet-mgr + - --iface=vlan40 # <--- Nueva línea + command: + - /opt/bin/flanneld + ... +``` + +> **TIP:** Puedes comprobar el nombre con `ip a` en el host, buscando la interfaz con la IP `192.168.4.x` (VLAN 40). + +**Aplica el manifiesto editado:** ```bash -kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml +kubectl apply -f kube-flannel.yml ``` --- -## e) Comprueba que Flannel funciona +## Verifica el despliegue y que Flannel usa la interfaz correcta + +* Comprueba que todos los pods de Flannel están en estado **Running**: ```bash kubectl -n kube-flannel get pods -o wide ``` -> Todos los pods deben estar en estado `Running`. +* Consulta los logs de Flannel en cada nodo: -Si no levanta, **verifica logs y revisa `/opt/cni/bin/`**: +```bash +kubectl -n kube-flannel logs | grep Using +``` -* Los binarios deben ser para la arquitectura correcta (x86\_64/amd64). -* Deben tener permisos de ejecución y ser propiedad de root. +Debes ver una línea como: + +```text +Using interface with name vlan40 and address 192.168.4.x +``` + +Si todo es correcto, ya puedes comprobar conectividad pod-to-pod entre nodos. --- -## f) Une el resto de nodos control-plane +## e) Une el resto de nodos control-plane En los demás nodos control-plane (tras configurar Keepalived y tener la VIP activa):