2

我有一个正在运行的 Kubernetes 集群,由 3 个节点和一个在 VPS 服务器上运行的主节点组成,每个节点和主节点都有自己的公共 IP 和浮动 IP,并且所有这些 IP 都与其他 IP 不同

我正在尝试将 metallb 配置为我的 Kubernetes 集群的负载均衡器,但我不知道如何将 metalLb IP 设置为配置文件中的范围

这是我的服务器的 IP 示例

  • 115.203.150.255
  • 94.217.238.58
  • 46.12.5.65
  • 76.47.79.44

正如您在此处看到的,每个 IP 都不同,那么如何在 metallb 配置映射中设置 IP 范围?

这是一个配置映射的示例

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - PUBLIC_IP-PUBLIC_IP    
4

2 回答 2

3

在 Metallb 文档中提到您可以使用某些 IP metallb.universe.tf/address-pool。看这里

apiVersion: v1
kind: Service
metadata:
  name: nginx
  annotations:
    metallb.universe.tf/address-pool: production-public-ips
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

production-public-ips必须按照此处所示进行配置

配置 MetalLB,您应该使用您的 ips 创建一个 configmap。由于您没有范围,您可以将/32ips 设置为子网,如下例所示。

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: production-public-ips
      protocol: layer2
      addresses:
      - 115.203.150.255/32
      - 94.217.238.58/32
      - 46.12.5.65/32
      - 76.47.79.44/32

它应该适用于您的场景。

于 2020-09-22T08:35:54.663 回答
0

我在不同国家/地区的 VPS 有同样的问题,但是 NGINX 入口控制器裸机注意事项不允许 IP NODE 作为“地址”中的 IP/32 范围。

https://kubernetes.github.io/ingress-nginx/deploy/baremetal/

MetalLB 需要一个 IP 地址池才能获得 ingress-nginx 服务的所有权。该池可以在名为 config 的 ConfigMap 中定义,该 ConfigMap 位于与 MetalLB 控制器相同的命名空间中。这个 IP 池必须专门供 MetalLB 使用,您不能重复使用 Kubernetes 节点 IP 或 DHCP 服务器分发的 IP。

于 2021-11-18T07:49:23.183 回答