OpenWrt# show ip bgp summary BGP router identifier 192.168.1.2, local AS number 65000 RIB entries 0, using 0 bytes of memory Peers 2, using 18 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.1.5 4 65001 0 0 0 0 0 never Active 192.168.1.6 4 65001 0 0 0 0 0 never Active
Total number of neighbors 2
Total num. Established sessions 0 Total num. of routes received 0
更新之后,你会发现 Service 的 EXTERNAL-IP 并没有重新分配,MetalLB 的控制器并没有自动生效配置。我们删除控制器 pod 进行重启:
$ kubectl delete po -n metallb-system -l app=metallb,component=controller pod 'controller-66445f859d-vss2t' deleted
此时可以看到 Service 分配到了新的 IP:
$ kubectl get svc -n default NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 25m nginx-lb LoadBalancer 10.43.188.185 192.168.0.30 8080:30381/TCP 21m nginx2-lb LoadBalancer 10.43.208.169 192.168.0.31 8080:32319/TCP 21m
检查 speaker POD 的日志,可以看到与 peer 192.168.1.2 之间的通信已经开始,并对外发布了 IP 地址的公告:
{'caller':'level.go:63','configmap':'metallb-system/config','event':'peerAdded','level':'info','msg':'peer configured, starting BGP session','peer':'192.168.1.2','ts':'2022-03-06T22:56:17.336335657Z'} {'caller':'level.go:63','configmap':'metallb-system/config','event':'configLoaded','level':'info','msg':'config (re)loaded','ts':'2022-03-06T22:56:17.336366122Z'} struct { Version uint8; ASN16 uint16; HoldTime uint16; RouterID uint32; OptsLen uint8 }{Version:0x4, ASN16:0xfde8, HoldTime:0xb4, RouterID:0xc0a80102, OptsLen:0x1e} {'caller':'level.go:63','event':'sessionUp','level':'info','localASN':65001,'msg':'BGP session established','peer':'192.168.1.2:179','peerASN':65000,'ts':'2022-03-06T22:56:17.337341549Z'} {'caller':'level.go:63','event':'updatedAdvertisements','ips':['192.168.0.30'],'level':'info','msg':'making advertisements using BGP','numAds':1,'pool':'default','protocol':'bgp','service':'default/nginx-lb','ts':'2022-03-06T22:56:17.341939983Z'} {'caller':'level.go:63','event':'serviceAnnounced','ips':['192.168.0.30'],'level':'info','msg':'service has IP, announcing','pool':'default','protocol':'bgp','service':'default/nginx-lb','ts':'2022-03-06T22:56:17.341987657Z'} {'caller':'level.go:63','event':'updatedAdvertisements','ips':['192.168.0.31'],'level':'info','msg':'making advertisements using BGP','numAds':1,'pool':'default','protocol':'bgp','service':'default/nginx2-lb','ts':'2022-03-06T22:56:17.342041554Z'} {'caller':'level.go:63','event':'serviceAnnounced','ips':['192.168.0.31'],'level':'info','msg':'service has IP, announcing','pool':'default','protocol':'bgp','service':'default/nginx2-lb','ts':'2022-03-06T22:56:17.342056076Z'}
然后可以在 vty 中查看路由表:
OpenWrt# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, P - PIM, A - Babel, N - NHRP, > - selected route, * - FIB route K>* 0.0.0.0/0 via 192.168.1.1, br-lan C>* 127.0.0.0/8 is directly connected, lo B>* 192.168.0.30/32 [20/0] via 192.168.1.5, br-lan, 00:00:06 B>* 192.168.0.31/32 [20/0] via 192.168.1.5, br-lan, 00:00:06 C>* 192.168.1.0/24 is directly connected, br-lan