Actualizar redes_internet.md
This commit is contained in:
@@ -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
|
```bash
|
||||||
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml
|
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`**
|
**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`
|
### ✅ Ejemplo 1: Asignación explícita con `loadBalancerIP`
|
||||||
|
|
||||||
@@ -236,8 +282,6 @@ spec:
|
|||||||
loadBalancerIP: 192.168.1.105 # IP concreta del pool
|
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)
|
### ✅ Ejemplo 2: Sin IP explícita (MetalLB elige una disponible)
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -254,40 +298,30 @@ spec:
|
|||||||
type: LoadBalancer
|
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
|
```bash
|
||||||
kubectl apply -f test-lb.yaml
|
kubectl apply -f test-lb.yaml
|
||||||
```
|
|
||||||
|
|
||||||
Supervisa la asignación de IP externa:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl -n lb-test get svc test-lb -w
|
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`.
|
Salida esperada:
|
||||||
|
|
||||||
Ejemplo de salida esperada:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||||
test-lb LoadBalancer 10.104.58.240 192.168.1.100 80:30248/TCP 9s
|
test-lb LoadBalancer 10.104.58.240 192.168.1.100 80:30248/TCP 9s
|
||||||
```
|
```
|
||||||
|
|
||||||
Cuando quieras limpiar la prueba:
|
Cuando termines:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl delete -f test-lb.yaml
|
kubectl delete -f test-lb.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Esto eliminará el Namespace `lb-test` y todos los recursos creados para la prueba.
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user