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 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 toma posesión del servicio y responde a las solicitudes ARP para esa IP para que sea accesible fuera del clúster OpenShift. Debido a que solo el nodo anuncia la IP, tiene un cuello de botella de ancho de banda y limitaciones de conmutación por error lenta. Para obtener más información, consulte la documentación."aquí" .

  • Modo BGP. En este modo, todos los nodos del clúster OpenShift establecen sesiones de intercambio de tráfico BGP con un enrutador y anuncian las rutas para reenviar tráfico a las IP del servicio. El requisito previo para esto es integrar MetalLB con un enrutador en esa red. Debido al mecanismo de hashing en BGP, existen ciertas limitaciones cuando cambia el mapeo de IP a nodo para un servicio. Para obtener más información, consulte la documentación."aquí" .

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 desea configurar MetalLB en modo BGP, omita el paso 6 anterior y siga el procedimiento de la documentación de MetalLB."aquí" .