metalLB: 如何查看某个 eip 由哪个节点的 speaker 在宣告?

3 阅读1分钟

❯ 如何查看某个 eip 由哪个节点的 speaker 在宣告?

● 有几种方式,按易用性排列:

  1. 查看 Service 的 Events(最简单)
  kubectl describe svc <service-name> -n <namespace> | grep "nodeAssigned"

  输出类似:
  Events:
    Normal  nodeAssigned  ... announcing from node "xs4772" with protocol "layer2"

  1. 查看 Speaker 的 metrics

在任意节点上 curl speaker 的 metrics 端口

  
  curl -s http://<node-ip>:7472/metrics | grep metallb_speaker_announced

metallb_speaker_announced{...} 1 表示该节点正在宣告对应服务。

  1. 查看 ServiceL2Status CRD

  kubectl get servicel2status -n metallb-system

MetalLB 会为每个 L2 宣告的服务创建 status 对象,里面包含宣告节点信息。

  1. 直接查 ARP(网络层验证)

从集群外或其他节点

  arping -c 1 <EIP>

回复的 MAC 地址对应哪个节点的 bond0,那就是当前 owner。