在不同的 vps 服务器上使用 kubernetes 运行 配置 metallb

Configure metallb with kubernetes running on different vps servers

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

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

这是我的服务器的 IP 示例

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

这里是一个配置映射的例子

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

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

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 必须如图所示进行配置 here

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

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

它应该适用于您的场景。

我在不同国家/地区遇到与 VPS 相同的问题,但 NGINX 入口控制器裸机考虑不允许 IP 节点作为“地址”中的 IP/32 范围。

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

MetalLB requires a pool of IP addresses in order to be able to take ownership of the ingress-nginx Service. This pool can be defined in a ConfigMap named config located in the same namespace as the MetalLB controller. This pool of IPs must be dedicated to MetalLB's use, you can't reuse the Kubernetes node IPs or IPs handed out by a DHCP server.