Skip to main content
NetApp container solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

安装 MetalLB 负载均衡器:Red Hat OpenShift 与NetApp

贡献者 kevin-hoke

本页列出了 MetalLB 负载均衡器的安装和配置说明。

MetalLB 是安装在 OpenShift 集群上的自托管网络负载均衡器,允许在不在云提供商上运行的集群中创建类型负载均衡器的 OpenShift 服务。 MetalLB 共同支撑 LoadBalancer 服务的两个主要特性是地址分配和对外通告。

MetalLB 配置选项

根据 MetalLB 如何宣布分配给 OpenShift 集群之外的 LoadBalancer 服务的 IP 地址,它以两种模式运行:

  • *第 2 层模式。*在此模式下,OpenShift 集群中的一个节点拥有该服务的所有权,并响应该 IP 的 ARP 请求,以使其在 OpenShift 集群外部可访问。由于只有节点通告 IP,因此存在带宽瓶颈和故障转移速度慢的限制。有关详细信息,请参阅文档"此处"

  • *BGP 模式。*在此模式下,OpenShift 集群中的所有节点都与路由器建立 BGP 对等会话,并通告路由以将流量转发到服务 IP。实现此目的的先决条件是将 MetalLB 与该网络中的路由器集成。由于BGP中的哈希机制,当服务的IP到节点映射发生变化时,会受到一定的限制。欲了解更多信息,请参阅文档"此处"

备注 为了本文档的目的,我们在第 2 层模式下配置 MetalLB。

安装 MetalLB 负载均衡器

  1. 下载 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. 编辑文件 `metallb.yaml`并删除 `spec.template.spec.securityContext`来自控制器部署和扬声器 DaemonSet。

    要删除的行:

    securityContext:
      runAsNonRoot: true
      runAsUser: 65534
  3. 创建 `metallb-system`命名空间。

    [netapp-user@rhel7 ~]$ oc create -f namespace.yaml
    namespace/metallb-system created
  4. 创建 MetalLB CR。

    [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. 在配置 MetalLB 扬声器之前,请授予扬声器 DaemonSet 提升的权限,以便它可以执行使负载均衡器工作所需的网络配置。

    [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. 通过创建配置 MetalLB `ConfigMap`在 `metallb-system`命名空间。

    [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. 现在,当创建负载均衡器服务时,MetalLB 会为服务分配一个 externalIP,并通过响应 ARP 请求来通告该 IP 地址。

    备注 如果您希望在 BGP 模式下配置 MetalLB,请跳过上面的第 6 步并按照 MetalLB 文档中的步骤进行操作"此处"