你如何让 MetalLB 围绕它的 iP 进行 arp?

Hw do you get MetalLB to arp around it's iP?

我有一个裸机 kube 集群(PI 集群)。它有一个简单的 hello world 网页,在各个节点上分开,并且运行良好。从那以后,我创建了一项服务,让它暴露在事物的 public 一侧,但该网站不会呈现。好像还没有发布公告

我的config.map很简单。

metadata:
  name: metallb
  namespace: metallb-system
  selfLink: /api/v1/namespaces/metallb-system/configmaps/metallb
  uid: 89d1e418-989a-4869-9da1-244409f8f700
  resourceVersion: '1086283'
  creationTimestamp: '2020-06-09T00:34:07Z'
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"v1","data":{"config":"address-pools:\n- name: default\n 
      protocol: layer2\n  addresses:\n  -
      192.168.1.16-192.168.1.31\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"metallb","namespace":"metallb-system"}}
  managedFields:
    - manager: kubectl
      operation: Update
      apiVersion: v1
      time: '2020-06-09T00:34:07Z'
      fieldsType: FieldsV1
      fieldsV1:
        'f:data':
          .: {}
          'f:config': {}
        'f:metadata':
          'f:annotations':
            .: {}
            'f:kubectl.kubernetes.io/last-applied-configuration': {}
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.16-192.168.1.31
kind: ConfigMap

我的服务看起来不错:

testapp-service   LoadBalancer   10.107.213.151   192.168.1.16   8081:30470/TCP   7m40s

在主节点上,我可以 curl 192.168.1.16:8081 并取回我期望的数据。但是,如果我转到 192.168.1.0 网络上的任何其他机器,我根本无法渲染它。

我知道 public 地址没有重叠。我的 DHCP 服务器屏蔽了 192.168.1.16-192.168.1.31 范围,因此该范围内没有任何内容。

那么如何让我的 master-001 节点宣布它正在处理 192.168.1.16 的流量? (它的唯一地址为 .250,并且确实公布了该地址,但该地址不是服务等)。

我在 Raspberry PI 4s 上使用 Ubuntu 20。 192 地址是 wifi 端,10. 是有线端。

谢谢, 尼克

在 Layer2 模式下,the address range you give to metallb and the node IPs must be in same subnet.节点的 IP 地址是多少?

发往服务 IP (192.168.1.16) 的数据包必须首先到达集群节点的第 2 层域,以便数据包可以路由到处理服务 IP 的节点,这意味着节点 IP 也必须在 192.168 .1.0 网络。

如果只有主节点连接到 public 网络,请尝试在扬声器守护程序集上添加 nodeAffinity,以便仅在这些节点上创建扬声器 pods。