为混合节点配置 Cilium BGP - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

为混合节点配置 Cilium BGP

本主题介绍如何为 Amazon EKS 混合节点功能配置 Cilium 边界网关协议(BGP)。Cilium 的 BGP 功能称为 Cilium BGP 控制面板,可用于向本地网络通告容器组(pod)和服务地址。有关将容器组(pod)CIDR 设置为可在本地网络上路由的替代方法,请参阅可路由的远程容器组(pod)CIDR

配置 Cilium BGP

先决条件

过程

  1. 要将 BGP 与 Cilium 结合使用,以向本地网络通告容器组(pod)或服务地址,必须已经安装了 Cilium 并配置了 bgpControlPlane.enabled: true。如果要为现有 Cilium 部署启用 BGP,则如果之前未启用 BGP,则必须重新启动 Cilium 管理器才能应用 BGP 配置。可以在 Helm 值中将 operator.rollOutPods 设置为 true,以便在 Helm 安装/升级过程中重新启动 Cilium 管理器。

    helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \ --namespace kube-system \ --reuse-values \ --set operator.rollOutPods=true \ --set bgpControlPlane.enabled=true
  2. 确认 Cilium 管理器和代理已重启并正在运行。

    kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
    NAME READY STATUS RESTARTS AGE cilium-grwlc 1/1 Running 0 4m12s cilium-operator-68f7766967-5nnbl 1/1 Running 0 4m20s cilium-operator-68f7766967-7spfz 1/1 Running 0 4m20s cilium-pnxcv 1/1 Running 0 6m29s cilium-r7qkj 1/1 Running 0 4m12s cilium-wxhfn 1/1 Running 0 4m1s cilium-z7hlb 1/1 Running 0 6m30s
  3. 创建带有 CiliumBGPClusterConfig 定义的名为 cilium-bgp-cluster.yaml 的文件。您可能需要从网络管理员获取以下信息:

    • 使用 ASN 为运行 Cilium 的节点配置 localASN

    • 使用 ASN 为本地路由器配置 peerASN

    • 使用运行 Cilium 的每个节点将与之对等的本地路由器 IP 对 peerAddress 进行配置。

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPClusterConfig metadata: name: cilium-bgp spec: nodeSelector: matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid bgpInstances: - name: "rack0" localASN: NODES_ASN peers: - name: "onprem-router" peerASN: ONPREM_ROUTER_ASN peerAddress: ONPREM_ROUTER_IP peerConfigRef: name: "cilium-peer"
  4. 将 Cilium BGP 集群配置应用于集群。

    kubectl apply -f cilium-bgp-cluster.yaml
  5. 使用定义 BGP 对等配置的 CiliumBGPPeerConfig 资源创建名为 cilium-bgp-peer.yaml 的文件。多个对等体可以共享相同的配置并引用共同的 CiliumBGPPeerConfig 资源。有关配置选项的完整列表,请参阅 Cilium 文档中的 BGP Peer Configuration

    以下 Cilium 对等设置的值必须与您正在与之对等的本地路由器的值相匹配。

    • 配置 holdTimeSeconds,其决定了 BGP 对等体在宣布会话关闭之前等待保持连接或更新消息的时间。默认值为 90 秒。

    • 配置 keepAliveTimeSeconds,其决定了 BGP 对等体是否仍可访问以及 BGP 会话是否处于活动状态。默认值为 30 秒。

    • 配置 restartTimeSeconds,其决定了 Cilium 的 BGP 控制面板在重启后预计重新建立 BGP 会话的时间。默认值为 120 秒。

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPPeerConfig metadata: name: cilium-peer spec: timers: holdTimeSeconds: 90 keepAliveTimeSeconds: 30 gracefulRestart: enabled: true restartTimeSeconds: 120 families: - afi: ipv4 safi: unicast advertisements: matchLabels: advertise: "bgp"
  6. 将 Cilium BGP 对等体配置应用于集群。

    kubectl apply -f cilium-bgp-peer.yaml
  7. 使用 CiliumBGPAdvertisement 资源创建名为 cilium-bgp-advertisement-pods.yaml 的文件,用于向本地网络通告容器组(pod)CIDR。

    • CiliumBGPAdvertisement 资源用于定义各种通告类型以及与之相关的属性。以下示例将 Cilium 配置为仅通告容器组(pod)CIDR。有关配置 Cilium 以通告服务地址的更多信息,请参阅服务类型 LoadBalancerCilium 集群内负载均衡中的示例。

    • 每个运行 Cilium 代理的混合节点都与启用了 BGP 的上游路由器对等。如下方示例所示,当 Cilium 的 advertisementType 设置为 PodCIDR 时,每个节点都会通告其拥有的容器组(pod)CIDR 范围。有关更多信息,请参阅 Cilium 文档中的 BGP Advertisements configuration

      apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisement-pods labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR"
  8. 将 Cilium BGP 广播配置应用到集群。

    kubectl apply -f cilium-bgp-advertisement-pods.yaml
  9. 您可以通过 Cilium CLI,使用 cilium bgp peers 命令来确认 BGP 对等连接是否有效。您应会在输出中看到您环境的正确值,会话状态为 established。有关故障排除的更多信息,请参阅 Cilium 文档中的 Troubleshooting and Operations Guide

    在下面的示例中,有五个混合节点在运行 Cilium 代理,每个节点都会通告其拥有的容器组(pod)CIDR 范围。

    cilium bgp peers
    Node Local AS Peer AS Peer Address Session State Uptime Family Received Advertised mi-026d6a261e355fba7 NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h18m58s ipv4/unicast 1 2 mi-082f73826a163626e NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h19m12s ipv4/unicast 1 2 mi-09183e8a3d755abf6 NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h18m47s ipv4/unicast 1 2 mi-0d78d815980ed202d NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h19m12s ipv4/unicast 1 2 mi-0daa253999fe92daa NODES_ASN ONPREM_ROUTER_ASN ONPREM_ROUTER_IP established 1h18m58s ipv4/unicast 1 2
    cilium bgp routes
    Node VRouter Prefix NextHop Age Attrs mi-026d6a261e355fba7 NODES_ASN 10.86.2.0/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-082f73826a163626e NODES_ASN 10.86.2.192/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-09183e8a3d755abf6 NODES_ASN 10.86.2.64/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-0d78d815980ed202d NODES_ASN 10.86.2.128/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-0daa253999fe92daa NODES_ASN 10.86.3.0/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}]