Skip to main content
NetApp container solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Instalación de balanceadores de carga MetalLB: Red Hat OpenShift con NetApp

Colaboradores banum-netapp kevin-hoke

Esta página enumera las instrucciones de instalación y configuración del balanceador de carga MetalLB.

MetalLB es un balanceador de carga de red autohospedado instalado en su clúster OpenShift que permite la creación de servicios OpenShift de tipo balanceador de carga en clústeres que no se ejecutan en un proveedor de nube. Las dos características principales de MetalLB que trabajan juntas para soportar los servicios LoadBalancer son la asignación de direcciones y el anuncio externo.

Opciones de configuración de MetalLB

Según cómo MetalLB anuncia la dirección IP asignada a los servicios LoadBalancer fuera del clúster OpenShift, opera en dos modos:

  • Modo de capa 2. En este modo, un nodo del clúster OpenShift asume la responsabilidad del servicio y responde a las solicitudes ARP para esa IP para que sea accesible desde fuera del clúster OpenShift. Como solo el nodo anuncia la IP, tiene un cuello de botella en el ancho de banda y limitaciones de conmutación por error lenta. Para más información, consulta "Documentación sobre el modo de capa 2 de MetalLB".

  • Modo BGP. En este modo, todos los nodos del clúster OpenShift establecen sesiones de emparejamiento BGP con un router y anuncian las rutas para reenviar el tráfico a las direcciones IP del servicio. El requisito previo para ello es integrar MetalLB con un router de dicha red. Debido al mecanismo de hash de BGP, existen ciertas limitaciones cuando cambia la asignación de IP a nodo para un servicio. Para obtener más información, consulta "Documentación sobre el modo BGP de MetalLB".

Nota Para los fines de este documento, configuramos MetalLB en modo de capa 2.

Instalación del balanceador de carga MetalLB

  1. Descargue los recursos de MetalLB.

    [netapp-user@rhel7 ~]$ wget https://raw.githubusercontent.com/metallb/metallb/v0.10.2/manifests/namespace.yaml
    [netapp-user@rhel7 ~]$ wget https://raw.githubusercontent.com/metallb/metallb/v0.10.2/manifests/metallb.yaml
  2. Editar archivo metallb.yaml y eliminar spec.template.spec.securityContext desde el controlador Deployment y el altavoz DaemonSet.

    Líneas a eliminar:

    securityContext:
      runAsNonRoot: true
      runAsUser: 65534
  3. Crea el metallb-system espacio de nombres.

    [netapp-user@rhel7 ~]$ oc create -f namespace.yaml
    namespace/metallb-system created
  4. Crear el CR de MetalLB.

    [netapp-user@rhel7 ~]$ oc create -f metallb.yaml
    podsecuritypolicy.policy/controller created
    podsecuritypolicy.policy/speaker created
    serviceaccount/controller created
    serviceaccount/speaker created
    clusterrole.rbac.authorization.k8s.io/metallb-system:controller created
    clusterrole.rbac.authorization.k8s.io/metallb-system:speaker created
    role.rbac.authorization.k8s.io/config-watcher created
    role.rbac.authorization.k8s.io/pod-lister created
    role.rbac.authorization.k8s.io/controller created
    clusterrolebinding.rbac.authorization.k8s.io/metallb-system:controller created
    clusterrolebinding.rbac.authorization.k8s.io/metallb-system:speaker created
    rolebinding.rbac.authorization.k8s.io/config-watcher created
    rolebinding.rbac.authorization.k8s.io/pod-lister created
    rolebinding.rbac.authorization.k8s.io/controller created
    daemonset.apps/speaker created
    deployment.apps/controller created
  5. Antes de configurar el altavoz MetalLB, otorgue al altavoz DaemonSet privilegios elevados para que pueda realizar la configuración de red necesaria para que los balanceadores de carga funcionen.

    [netapp-user@rhel7 ~]$ oc adm policy add-scc-to-user privileged -n metallb-system -z speaker
    clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "speaker"
  6. Configure MetalLB creando un ConfigMap en el metallb-system espacio de nombres.

    [netapp-user@rhel7 ~]$ vim metallb-config.yaml
    
    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: metallb-system
      name: config
    data:
      config: |
        address-pools:
        - name: default
          protocol: layer2
          addresses:
          - 10.63.17.10-10.63.17.200
    
    [netapp-user@rhel7 ~]$ oc create -f metallb-config.yaml
    configmap/config created
  7. Ahora, cuando se crean servicios de balanceo de carga, MetalLB asigna una IP externa a los servicios y anuncia la dirección IP respondiendo a las solicitudes ARP.

    Nota Si deseas configurar MetalLB en modo BGP, omite el paso 6 anterior y sigue el procedimiento en "Documentación sobre el modo BGP de MetalLB".