Servicios de red
Esta página explica cómo funcionan CoreDNS y el controlador Nginx-Ingress dentro de RKE2.
Consulta la página de Opciones Básicas de Red para obtener detalles sobre las opciones de configuración de Canal, o cómo configurar tu propio CNI.
Para información sobre qué puertos deben abrirse para RKE2, consulta los Requisitos de Instalación.
CoreDNS
CoreDNS se despliega por defecto al iniciar el servidor. Para deshabilitar, ejecuta cada servidor con la opción disable: rke2-coredns en tu archivo de configuración.
Si no instalas CoreDNS, necesitarás instalar un proveedor de DNS de clúster tú mismo.
CoreDNS se despliega con el autoscaler por defecto. Para deshabilitarlo o cambiar su configuración, utiliza el recurso HelmChartConfig.
NodeLocal DNSCache
NodeLocal DNSCache mejora el rendimiento al ejecutar un agente de caché DNS en cada nodo. Para activar esta función, aplica el siguiente HelmChartConfig:
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-coredns
namespace: kube-system
spec:
valuesContent: |-
nodelocal:
enabled: true
El controlador Helm volverá a desplegar CoreDNS con la nueva configuración. Ten en cuenta que nodelocal modifica el paquete de tablas IP del nodo para interceptar el tráfico DNS. Por lo tanto, activar y luego desactivar esta función sin volver a desplegar, hará que el servicio DNS deje de funcionar.
Ten en cuenta que NodeLocal DNSCache debe desplegarse en modo ipvs si kube-proxy está utilizando ese modo. Para desplegarlo en este modo, aplica el siguiente HelmChartConfig:
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-coredns
namespace: kube-system
spec:
valuesContent: |-
nodelocal:
enabled: true
ipvs: true
NodeLocal DNS Cache con Cilium en modo de reemplazo de kube-proxy
Esta función está disponible a partir de las versiones v1.28.13+rke2r1, v1.29.8+rke2r1 y v1.30.4+rke2r1.
Si tu elección de CNI es Cilium en modo de reemplazo de kube-proxy y deseas utilizar NodeLocal DNS Cache, necesitas configurar Cilium para usar una Política de Redirección Local (LRP) para enrutar el tráfico DNS a tu caché NodeLocal. Esto se debe a que, en este modo, el enrutamiento eBPF de Cilium omite las reglas del paquete de tablas IP, por lo que nodelocal no puede configurarlas para enrutar el tráfico DNS hacia sí mismo.
Esto se hace en dos pasos:
-
Activa la función de Política de Redirección Local en Cilium configurando la bandera
localRedirectPolicyen verdadero en el HelmChartConfig de Cilium. Esto tendría el siguiente aspecto:--- # /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml --- apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: name: rke2-cilium namespace: kube-system spec: valuesContent: |- kubeProxyReplacement: true k8sServiceHost: <KUBE_API_SERVER_IP> k8sServicePort: <KUBE_API_SERVER_PORT> localRedirectPolicy: true -
Configura el chart
rke2-corednspara establecer su LRP aplicando el siguiente HelmChartConfig:--- apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: name: rke2-coredns namespace: kube-system spec: valuesContent: |- nodelocal: enabled: true use_cilium_lrp: true
Controlador de Ingress
-
ingress-nginx
-
Traefik
|
El controlador ingress-nginx alcanzará el Fin de Vida (EOL) en marzo de 2026 y queda obsoleto en RKE2 v1.36. Los usuarios de SUSE® Rancher Prime: RKE2 seguirán recibiendo soporte y correcciones de CVE (8+) durante todo el ciclo de vida de RKE2 v1.32, v1.33, v1.34, v1.35 y v1.36. Recomendamos cambiar a Traefik siguiendo la guía Migrando de Ingress-NGINX a Traefik en un clúster RKE2 independiente. |
ingress-nginx es un controlador de Ingress impulsado por NGINX que utiliza un ConfigMap para almacenar la configuración de NGINX.
ingress-nginx se despliega por defecto al iniciar el servidor. Los puertos 80 y 443 serán ocupados por el controlador de ingress en su configuración predeterminada, haciendo que estos sean inutilizables para servicios de HostPort o NodePort en el clúster.
Las opciones de configuración se pueden especificar creando un manifiesto HelmChartConfig para personalizar los valores del HelmChart rke2-ingress-nginx. Por ejemplo, un HelmChartConfig en /var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx-config.yaml con el siguiente contenido establece use-forwarded-headers en "true" en el ConfigMap que almacena la configuración de NGINX:
# /var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx-config.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-ingress-nginx
namespace: kube-system
spec:
valuesContent: |-
controller:
config:
use-forwarded-headers: "true"
Para más información, consulta los parámetros oficiales de configuración del Helm para ingress-nginx.
|
Puerta de Versión
El soporte de Traefik está disponible a partir de las versiones de agosto de 2024: v1.28.12+rke2r1, v1.29.7+rke2r1, v1.30.3+rke2r1. |
Traefik es un proxy inverso HTTP moderno y un balanceador de carga diseñado para desplegar microservicios con facilidad. Simplifica la complejidad de la red al diseñar, desplegar y ejecutar aplicaciones.
Para usar Traefik, inicia cada servidor con la opción ingress-controller: traefik en tu archivo de configuración.
- Las opciones de configuración se pueden especificar creando un manifiesto HelmChartConfig para personalizar los valores del HelmChart
rke2-traefik. Por ejemplo, un HelmChartConfig en/var/lib/rancher/rke2/server/manifests/rke2-traefik-config.yamlcon el siguiente contenido cambia el nivel de registro a "DEBUG"
# /var/lib/rancher/rke2/server/manifests/rke2-traefik-config.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-traefik
namespace: kube-system
spec:
valuesContent: |-
logs:
general:
level: "DEBUG"
Para ver todas las opciones configurables, visita el values.yaml del chart.
Para desactivar el controlador de ingress, inicia cada servidor con la opción ingress-controller: none en tu archivo de configuración.
API de Gateway
La API de Gateway es una familia de recursos de Kubernetes que proporciona aprovisionamiento dinámico de infraestructura y enrutamiento de tráfico avanzado. Mientras que la API de Ingress tradicional sigue siendo compatible (y no se planea que se deprecie), la API de Gateway ofrece una forma más expresiva, orientada a roles y extensible de gestionar la exposición de servicios.
Para aprovechar la API de Gateway en SUSE® Rancher Prime: RKE2 debes usar Traefik. Por favor, utiliza la siguiente HelmChartConfig para habilitar GatewayAPI:
# /var/lib/rancher/rke2/server/manifests/rke2-traefik-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-traefik
namespace: kube-system
spec:
valuesContent: |-
providers:
kubernetesGateway:
enabled: true
# experimentalChannel: true (read warning below)
Traefik es compatible con API de Gateway v1.4.
|
Si necesitas soporte para recursos experimentales de la API de Gateway, por ejemplo, TCPRoute, debes instalar el experimental-install.yaml desde las versiones de gateway-api oficiales y usar la opción |
Balanceador de Carga de Servicio
Los Servicios de Kubernetes pueden ser del tipo LoadBalancer, pero requiere un controlador de balanceo de carga externo para implementar las cosas correctamente y, por ejemplo, proporcionar la dirección externa. RKE2 puede desplegar opcionalmente un controlador de balanceo de carga conocido como ServiceLB que utiliza puertos de host disponibles. Para más información, por favor lee el siguiente enlace.
|
Al consultar la documentación de K3s, utiliza la etiqueta |
Para habilitar serviceLB, utiliza la opción --enable-servicelb al desplegar RKE2.