帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
为混合节点配置 Cilium BGP
本主题介绍如何为 Amazon EKS 混合节点功能配置 Cilium 边界网关协议(BGP)。Cilium 的 BGP 功能称为 Cilium BGP 控制面板
配置 Cilium BGP
先决条件
-
按照为混合节点配置 CNI中的说明安装 Cilium。
过程
-
要将 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
-
确认 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
-
创建带有
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"
-
-
将 Cilium BGP 集群配置应用于集群。
kubectl apply -f cilium-bgp-cluster.yaml
-
使用定义 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"
-
-
将 Cilium BGP 对等体配置应用于集群。
kubectl apply -f cilium-bgp-peer.yaml
-
使用
CiliumBGPAdvertisement
资源创建名为cilium-bgp-advertisement-pods.yaml
的文件,用于向本地网络通告容器组(pod)CIDR。-
CiliumBGPAdvertisement
资源用于定义各种通告类型以及与之相关的属性。以下示例将 Cilium 配置为仅通告容器组(pod)CIDR。有关配置 Cilium 以通告服务地址的更多信息,请参阅服务类型 LoadBalancer和Cilium 集群内负载均衡中的示例。 -
每个运行 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"
-
-
将 Cilium BGP 广播配置应用到集群。
kubectl apply -f cilium-bgp-advertisement-pods.yaml
-
您可以通过 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-082f73826a163626eNODES_ASN
ONPREM_ROUTER_ASN
ONPREM_ROUTER_IP
established 1h19m12s ipv4/unicast 1 2 mi-09183e8a3d755abf6NODES_ASN
ONPREM_ROUTER_ASN
ONPREM_ROUTER_IP
established 1h18m47s ipv4/unicast 1 2 mi-0d78d815980ed202dNODES_ASN
ONPREM_ROUTER_ASN
ONPREM_ROUTER_IP
established 1h19m12s ipv4/unicast 1 2 mi-0daa253999fe92daaNODES_ASN
ONPREM_ROUTER_ASN
ONPREM_ROUTER_IP
established 1h18m58s ipv4/unicast 1 2cilium 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-082f73826a163626eNODES_ASN
10.86.2.192/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-09183e8a3d755abf6NODES_ASN
10.86.2.64/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-0d78d815980ed202dNODES_ASN
10.86.2.128/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}] mi-0daa253999fe92daaNODES_ASN
10.86.3.0/26 0.0.0.0 1h16m46s [{Origin: i} {Nexthop: 0.0.0.0}]