0

我们设置了本地 kubernetes 集群,其中包含 1 个 master 和 2 个 worker,以及带有 calico 网络的 metallb。问题是我们的应用程序没有从外部世界打开。

我可以从我的 K8S 集群中卷曲外部 IP,但无法从浏览器中打开它。

主节点和工作节点的 IP 范围与配置映射地址池不同 -

主/工作节点 --> abcd

Metallb config.yaml -->

apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- w.x.y.z

我想知道metallb config.yaml中的地址范围是否需要和集群网络一样?因为我给kubernetes集群IP范围的时候,应用是从外面打开的,否则不行。

4

2 回答 2

0

要使用 MetalLB,您的分配 IP 范围必须可以从您的集群网络访问。例如,如果您的集群 IP 是 192.168.1.0 /24,您可以分配范围为 192.168.1.1 - 192.168.1.254 的 IP

因此,如果您将在ConfigMap

...
addresses:
      - 192.168.1.1-192.168.1.254

它会起作用的。

但是,如果您设置集群 IP,例如 192.168.1.0/28,您将只能使用 192.168.1.1-192.168.1.14 范围内的地址。

请记住,网络配置和正确的 ConfigMap 并不是全部。您必须创建服务(负载均衡器),它将您的集群暴露给世界。

请查看此 MetalLB教程。它包含正确 MetalLB 集的示例。

于 2019-07-15T11:24:47.320 回答
0

在第 2 层模式下,您为 metallb 提供的 IP 地址范围应在集群节点网络范围内。您需要来自集群外部的 IP 数据包首先到达集群子网。然后,接收到由 metallb 分配的虚拟 IP 的流量的端点(可能是连接集群子网到外部网络的路由器)可以执行 ARP 请求,以找出当前拥有虚拟 IP 的节点上接口的 MAC 地址。这就是外部数据包的路由方式。

于 2019-12-30T14:54:58.257 回答