Actualizar redes_internet.md

This commit is contained in:
xguefer
2025-08-11 00:49:24 +02:00
parent 8f6ddb699a
commit e29fd152d8

View File

@@ -160,7 +160,7 @@ MetalLB permite asignar IPs flotantes de tu red LAN a servicios `LoadBalancer`,
---
## 2.1 Instala MetalLB
## 2.1 Instalar MetalLB
```bash
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml
@@ -170,9 +170,55 @@ Esto crea el namespace `metallb-system` y despliega los pods necesarios.
---
## 2.2 Define un pool con múltiples rangos
## 2.2 Habilitar `strictARP` en kube-proxy (obligatorio en L2)
En lugar de crear múltiples `IPAddressPool` por separado, puedes declarar varios rangos de IP en un **solo** `IPAddressPool`. Esto simplifica la gestión.
Para evitar problemas de **ARP flapping** y garantizar que solo el nodo que anuncia la IP responda a las peticiones ARP, es necesario activar `strictARP` en kube-proxy.
```bash
kubectl -n kube-system edit configmap kube-proxy
```
En la sección `config.conf` busca la línea `strictARP` y cámbiala a:
```yaml
strictARP: true
```
Guarda y reinicia kube-proxy:
```bash
kubectl -n kube-system rollout restart daemonset kube-proxy
```
---
## 2.3 Eliminar la etiqueta que excluye los nodos de anunciar LoadBalancer
Por defecto, Kubernetes etiqueta los nodos `control-plane` con:
```text
node.kubernetes.io/exclude-from-external-load-balancers
```
Esto impide que MetalLB anuncie servicios desde esos nodos.
Para eliminarla de todos los nodos:
```bash
kubectl label node --all node.kubernetes.io/exclude-from-external-load-balancers-
```
Verifica que ya no aparece:
```bash
kubectl get nodes -L node.kubernetes.io/exclude-from-external-load-balancers
```
---
## 2.4 Definir un pool con múltiples rangos
En lugar de crear múltiples `IPAddressPool` por separado, puedes declarar varios rangos de IP en un **solo** `IPAddressPool`.
**Ejemplo: `metallb/ipaddresspool.yaml`**
@@ -215,9 +261,9 @@ kubectl apply -k metallb/
---
## 2.3 Asignar una IP concreta al Service (`loadBalancerIP`)
## 2.5 Asignar una IP concreta al Service (`loadBalancerIP`)
Puedes indicar directamente la IP deseada usando el campo `loadBalancerIP`, y MetalLB la asignará si pertenece a uno de los rangos definidos.
Puedes indicar directamente la IP deseada usando el campo `loadBalancerIP`.
### ✅ Ejemplo 1: Asignación explícita con `loadBalancerIP`
@@ -236,8 +282,6 @@ spec:
loadBalancerIP: 192.168.1.105 # IP concreta del pool
```
No es necesario usar anotaciones si la IP está incluida en el `IPAddressPool`.
### ✅ Ejemplo 2: Sin IP explícita (MetalLB elige una disponible)
```yaml
@@ -254,40 +298,30 @@ spec:
type: LoadBalancer
```
MetalLB seleccionará automáticamente una IP libre de **cualquier** rango declarado en el pool.
---
## 2.4 Verificar los resultados
## 2.6 Verificar el funcionamiento
Para comprobar que **MetalLB** asigna direcciones IP correctamente, realiza la siguiente prueba utilizando el manifiesto `test-lb.yaml` que ya está en el repositorio:
Prueba con el manifiesto `test-lb.yaml`:
```bash
kubectl apply -f test-lb.yaml
```
Supervisa la asignación de IP externa:
```bash
kubectl -n lb-test get svc test-lb -w
```
Deberías ver en la columna `EXTERNAL-IP` una de las direcciones configuradas en tu `IPAddressPool`.
Ejemplo de salida esperada:
Salida esperada:
```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-lb LoadBalancer 10.104.58.240 192.168.1.100 80:30248/TCP 9s
```
Cuando quieras limpiar la prueba:
Cuando termines:
```bash
kubectl delete -f test-lb.yaml
```
Esto eliminará el Namespace `lb-test` y todos los recursos creados para la prueba.
---