Integración de NetScaler CPX con MetalLB en modo de capa 2 para clústeres de Kubernetes locales

Last published : Oct 02, 2026
El soporte para el servicio de Kubernetes de tipo LoadBalancer lo proporcionan los equilibradores de carga en la nube en un entorno de nube. Los proveedores de servicios en la nube habilitan este soporte creando automáticamente un equilibrador de carga y asignando una dirección IP que se muestra como parte del estado del servicio. Cualquier tráfico destinado a la dirección IP externa se equilibra en NodeIP y NodePort mediante el equilibrador de carga en la nube.
NetScaler ofrece diferentes opciones para admitir los servicios de tipo LoadBalancer en un entorno local, que incluyen:
  • Uso de un NetScaler VPX o NetScaler MPX externo como equilibrador de carga de nivel 1 para equilibrar el tráfico entrante a los servicios de Kubernetes.
Para obtener más información sobre dicha implementación, consulte Exponer servicios de tipo LoadBalancer.
  • Exponer aplicaciones que se ejecutan en un clúster de Kubernetes utilizando el daemonset de NetScaler CPX que se ejecuta dentro del clúster de Kubernetes junto con un enrutador que admite ECMP sobre BGP. El enrutador ECMP equilibra la carga del tráfico a varias instancias de NetScaler CPX. Las instancias de NetScaler CPX equilibran la carga de los pods de aplicación reales. Para obtener más información sobre dicha implementación, consulte Anuncio BGP de direcciones IP externas para servicios de tipo LoadBalancer e Ingresses mediante NetScaler CPX.
  • Exponer los servicios de NetScaler CPX como un servicio IP externo con una dirección IP externa de nodo. Puede utilizar esta opción si un ADC externo como nivel 1 no es factible y no existe un enrutador BGP. En esta implementación, Kubernetes enruta el tráfico que llega a la spec.externalIP del servicio NetScaler CPX en los puertos de servicio a los pods de NetScaler CPX. Los recursos Ingress se pueden configurar utilizando NetScaler Ingress Controller para realizar la descarga SSL (Secure Sockets Layer) y el equilibrio de carga de las aplicaciones. Sin embargo, esta implementación tiene el gran inconveniente de no ser fiable si hay un fallo de nodo.
  • Utilice MetalLB, que es una implementación de equilibrador de carga para clústeres de Kubernetes bare metal en modo de capa 2 con NetScaler CPX para lograr la capacidad de entrada.
Esta documentación muestra cómo puede aprovechar MetalLB junto con NetScaler CPX para lograr la capacidad de entrada en clústeres bare metal cuando las otras soluciones no son factibles. MetalLB en modo de capa 2 configura un nodo para enviar todo el tráfico al servicio NetScaler CPX. MetalLB mueve automáticamente la dirección IP a un nodo diferente si hay un fallo de nodo. Esto proporciona una mayor fiabilidad que el servicio ExternalIP.
Nota: MetalLB todavía está en versión beta. Consulte la documentación oficial para conocer la madurez del proyecto y cualquier limitación.
Realice los siguientes pasos para implementar la integración de NetScaler CPX con MetalLB en modo de capa 2 para clústeres de Kubernetes locales.
  1. Instalar y configurar MetalLB
  2. Configurar la configuración de MetalLB para la capa 2
  3. Instalar el servicio NetScaler CPX

Instalar y configurar MetalLB

Primero, debe instalar MetalLB en modo de capa 2. Para obtener más información sobre los diferentes tipos de instalaciones para MetalLB, consulte la documentación de MetalLB.
Realice los siguientes pasos para instalar MetalLB:
  1. Cree un espacio de nombres para implementar MetalLB.
    kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml
  2. Implemente MetalLB usando el siguiente comando.
    kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml
  3. Realice el siguiente paso si está realizando la instalación por primera vez.
    kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
  4. verificar la instalación de MetalLB y asegúrese de que el altavoz y el controlador estén en estado de ejecución usando el siguiente comando:
    kubectl get pods -n metallb-system
Estos pasos implementan MetalLB en su clúster, bajo el espacio de nombres metallb-system.
El archivo YAML de implementación de MetalLB contiene los siguientes componentes:
  • La implementación metallb-system/controller: Este componente es el controlador de todo el clúster que gestiona las asignaciones de direcciones IP.
  • El daemonset metallb-system/speaker. Este componente se comunica utilizando los protocolos de su elección para hacer que los servicios sean accesibles.
  • Cuentas de servicio para el controlador y el altavoz, junto con los permisos RBAC que los componentes necesitan para funcionar.

Configuración de MetalLB para la capa 2

Una vez instalado MetalLB, debe configurarlo para el modo de capa 2. MetalLB toma un rango de direcciones IP para ser asignadas a los servicios de tipo LoadBalancer como IP externa. En esta implementación, un servicio NetScaler CPX actúa como front-end para todas las demás aplicaciones. Por lo tanto, una única dirección IP es suficiente.
Cree un ConfigMap para MetalLB usando el siguiente comando donde metallb-config.yaml es el archivo YAML con la configuración de MetalLB.
kubectl create –f metallb-config.yaml
A continuación se muestra una configuración de MetalLB de ejemplo para el modo de capa 2. En este ejemplo, 192.168.1.240-192.168.1.240 se especifica como el rango de direcciones IP.

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.240-192.168.1.240

Instalación del servicio NetScaler CPX

Una vez que MetalLB se haya instalado correctamente, puede instalar la implementación de NetScaler CPX y un servicio de tipo LoadBalancer.
Para instalar NetScaler CPX, puede usar el archivo YAML o los gráficos de Helm.
Para instalar NetScaler CPX usando el archivo YAML, realice los siguientes pasos:
  1. Descargue los manifiestos de implementación de NetScaler CPX.
    wget https://github.com/citrix/citrix-k8s-ingress-controller/blob/master/deployment/baremetal/citrix-k8s-cpx-ingress.yml
  2. Edite el YAML de implementación de NetScaler CPX:
    • Establezca el número de réplicas según sea necesario. Es mejor tener más de una réplica para alta disponibilidad.
    • Cambie el tipo de servicio a LoadBalancer.
  3. Aplique el archivo YAML editado usando el comando Kubectl.
    kubectl apply –f citrix-k8s-cpx-ingress.yaml
  4. Vea el servicio usando el siguiente comando:
    kubectl get svc cpx-service -output yaml
    Puede ver que MetalLB asigna una dirección IP externa al servicio NetScaler CPX de la siguiente manera:

apiVersion: v1
kind: Service
metadata:
  name: cpx-service
  namespace: default
spec:
  clusterIP: 10.107.136.241
  externalTrafficPolicy: Cluster
  healthCheckNodePort: 31916
  ports:
  - name: http
    nodePort: 31528
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    nodePort: 31137
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: cpx-ingress
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 192.168.1.240

Implementar una aplicación de ejemplo

Realice los siguientes pasos para implementar una aplicación de ejemplo y verificar la implementación.
  1. Cree una implementación de ejemplo usando el archivo sample-deployment.yaml.
    kubectl create –f sample-deployment.yaml
  2. Exponga la aplicación con un servicio usando el archivo sample-service.yaml.
    kubectl create –f sample-service.yaml
  3. Una vez creado el servicio, puede añadir un recurso de entrada utilizando el sample-ingress.yaml.
    kubectl create –f sample-ingress.yaml
Puede probar el Ingress accediendo a la aplicación utilizando una dirección IP externa cpx-service de la siguiente manera:
curl -v http://192.168.1.240 -H ‘host: testdomain.com’

Referencias adicionales

Para obtener más información sobre la configuración y la resolución de problemas de MetalLB, consulte los siguientes enlaces: