第 2 层配置中的 Metallb 多个 ip(nic)

Metallb multiple ip(nic) in Layer 2 config

我有一个本地 kubernetes 集群设置,有 1 个主节点和 2 个工作节点。 我有两个地址范围,其中主节点和工作节点在两个网络中都有 ips。 Master(192.168.0.10 和 192.168.1.10),node1(192.168.0.11 和 192.168.1.11),node2(192.168.0.12 和 192.168.1.12)。我可以使用任一 ip 地址从每个节点 ping 到每个其他节点。我还可以从外部网络 ping 所有地址 192.168.0.x 和 192.168.1.x.

名为“intnet”的地址范围是 192.168.0.200-192.168.0.250 名为“extnet”的地址范围是 192.168.1.200-192.168.0.250 请求来自 extnet 的 ips 的服务处于挂起状态。

我的metallb地址池配置如下

address-pools:
- name: intnet
  protocol: layer2
  addresses:
  - 192.168.0.200-192.168.0.250
address-pools:
- name: extnet
  protocol: layer2
  addresses:
  - 192.168.1.200-192.168.1.250

我的service.yml是这样的

apiVersion: v1
kind: Service
metadata:
  name: sth1
  annotations:
    metallb.universe.tf/address-pool: extnet
spec:
  selector:
    app: local-web
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  type: LoadBalancer
 

没有获取外部 IP 地址 kubectl get svc 永远显示“待定”。而当我使用“intnet”时,该服务会快速从 intnet 获取 IP 地址。

有人可以帮忙吗?我在这里想念什么?

根据official documentation关于这个问题的指导,你必须配置Metallb文件删除第二行 address-pools:

address-pools:
- name: intnet
  protocol: layer2
  addresses:
  - 192.168.0.200-192.168.0.250
- name: extnet
  protocol: layer2
  addresses:
  - 192.168.1.200-192.168.1.250