×

作为集群管理员,您可以配置一个社区别名,并在不同的广播中使用它。

关于社区自定义资源

community 自定义资源是社区别名的集合。用户可以定义命名别名,以便在使用 BGPAdvertisement 广播 ipAddressPools 时使用。下表描述了 community 自定义资源的字段。

community CRD 仅适用于 BGPAdvertisement。

表 1. MetalLB 社区自定义资源
字段 类型 描述

metadata.name

字符串

指定 community 的名称。

metadata.namespace

字符串

指定 community 的命名空间。指定 MetalLB 运算符使用的相同命名空间。

spec.communities

字符串

指定可在 BGPAdvertisements 中使用的 BGP 社区别名列表。社区别名由名称(别名)和值(数字:数字)对组成。通过在其 spec.communities 字段中引用别名名称,将 BGPAdvertisement 链接到社区别名。

表 2. CommunityAlias
字段 类型 描述

名称

字符串

community 的别名名称。

字符串

与给定名称对应的 BGP community 值。

使用 BGP 广播和社区别名配置 MetalLB

按如下方式配置 MetalLB,以便使用 BGP 协议广播 IPAddressPool,并将社区别名设置为 NO_ADVERTISE 社区的数值。

在以下示例中,对等 BGP 路由器 doc-example-peer-community 会为 MetalLB 分配给服务的每个负载均衡器 IP 地址接收一个 203.0.113.200/32 路由和一个 fc00:f853:ccd:e799::1/128 路由。社区别名配置为 NO_ADVERTISE 社区。

先决条件
  • 安装 OpenShift CLI (oc)。

  • 以具有 cluster-admin 特权的用户身份登录。

步骤
  1. 创建一个 IP 地址池。

    1. 创建一个文件,例如 ipaddresspool.yaml,内容如下例所示

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        namespace: metallb-system
        name: doc-example-bgp-community
      spec:
        addresses:
          - 203.0.113.200/30
          - fc00:f853:ccd:e799::/124
    2. 应用 IP 地址池的配置

      $ oc apply -f ipaddresspool.yaml
  2. 创建一个名为 community1 的社区别名。

    apiVersion: metallb.io/v1beta1
    kind: Community
    metadata:
      name: community1
      namespace: metallb-system
    spec:
      communities:
        - name: NO_ADVERTISE
          value: '65535:65282'
  3. 创建一个名为 doc-example-bgp-peer 的 BGP 对等体。

    1. 创建一个文件,例如 bgppeer.yaml,内容如下例所示

      apiVersion: metallb.io/v1beta2
      kind: BGPPeer
      metadata:
        namespace: metallb-system
        name: doc-example-bgp-peer
      spec:
        peerAddress: 10.0.0.1
        peerASN: 64501
        myASN: 64500
        routerID: 10.10.10.10
    2. 应用 BGP 对等体的配置

      $ oc apply -f bgppeer.yaml
  4. 创建一个带有社区别名的 BGP 宣告。

    1. 创建一个文件,例如 bgpadvertisement.yaml,内容如下例所示

      apiVersion: metallb.io/v1beta1
      kind: BGPAdvertisement
      metadata:
        name: bgp-community-sample
        namespace: metallb-system
      spec:
        aggregationLength: 32
        aggregationLengthV6: 128
        communities:
          - NO_ADVERTISE (1)
        ipAddressPools:
          - doc-example-bgp-community
        peers:
          - doc-example-peer
      1 在此处指定 CommunityAlias.name,而不是社区自定义资源 (CR) 名称。
    2. 应用配置

      $ oc apply -f bgpadvertisement.yaml