4

使用 MetalLB 负载均衡器时无法连接到 Kubernetes Deployment (App)。尝试配置浮动 IP,因此当一个节点发生故障并且工作负载转移时,我仍然知道在具有新地址的新节点上的 IP 是什么。

部署:

  1. 4x Raspberry Pi 4s 上的 Raspbian
  2. 在以太网端口上启用混杂模式
  3. 码头工人 + Kubernetes
  4. CNI - 编织(设置 NO_MASQ_LOCAL = 1)。[我也用 Flannel 设置了这个,结果相同]
  5. NGINX 泊坞窗图像
  6. 带有 Layer2 的 MetalLB(节点网络是 192.168.0.0/24,MetalLB 的 YAML 有一个为 VIP 192.168.0.240/28 分配的小子网)

已验证:

  1. 部署 (NGINX) 在 CNI IP (10.44.0.1:80) 上工作。使用 curl 从节点托管容器到容器 IP 进行验证。
  2. 部署 (NGINX) 使用节点 IP (192.168.0.102) 在 Nodeport 上工作。通过从笔记本电脑 curl 到节点进行验证。

部署 .yaml

metallb.yaml

apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: my-ip-space protocol: layer2 addresses: - 192.168.0.240/28

nginx.yaml apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1 ports: - name: http containerPort: 80

nginx-服务-lb.yaml apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: selector: app: nginx type: LoadBalancer ports: - port: 80 name: http protocol: TCP targetPort: 80

结果

我认为有效:

  1. 我认为从笔记本电脑向 VIP 发出的 ARP 请求正在工作,出现托管容器的节点的 MAC 地址。

不起作用:

  1. 部署分配一个 VIP 192.168.0.240 和端口 X 的负载均衡器,但是当我尝试从工作节点或我的笔记本电脑连接到它时失败。我的笔记本电脑 IP 在同一个网络中。该 VIP 所在的节点也无法执行 curl 请求。
  2. 我尝试将负载平衡子网设置为部署节点的 /32,以查看它是 IP 还是 ARP 问题。这样做时,我可以验证 MetalLB 分配的端口是否打开,但没有响应。这是在我的笔记本电脑上完成的。

笔记本电脑的结果

  1. 〜用户$ curl 192.168.0.102:31854
    • curl: (7) 连接 192.168.0.102 端口 31854 失败:连接被拒绝

来自笔记本电脑的 ARP 请求 .102 是节点,.240 是 MetalLB 分配的 VIP

  1. 〜用户$ arp 192.168.0.102
    • ? (192.168.0.102) 在 en0 ifscope [以太网] 上的 dc:a6:32:b:fc:d
  2. 〜用户$ arp 192.168.0.240
    • ? (192.168.0.240) 在 en0 ifscope [以太网] 上的 dc:a6:32:b:fc:d
4

1 回答 1

0

我们遇到了一个以完全相同的方式表现出来的问题,我们将其追溯到将 MetalLB 网络与另一个网络(我们的办公室无线网络)桥接的 Windows 操作系统网桥。

还有其他可能以类似方式出现的问题(例如防火墙配置),因此要验证桥接网络是否导致问题,请运行

arping -I <interface> <target ip>

其中<interface>是 MetalLB 网络上可路由的接口(在您的情况下为 en0),并且<target ip>是 Kubernetes 服务的外部 IP(在您的示例中为 192.168.0.240)。如果是网桥导致问题,您将看到与 2 个不同 MAC 地址关联的 IP(或更多,取决于网桥的数量)。

一旦 MetalLB 分配了 IP 地址,桥接网络似乎就可以工作,即使在重新部署服务或部署新服务时也是如此。

如果存在网桥并且您必须对其进行维护,请考虑在 BGP 模式下配置 MetalLB。

于 2021-03-17T18:46:01.140 回答