0

我已经购买了 3 个 VPS 并拥有类似的 IP 地址

   172.168.1.146
   72.168.43.245
   98.156.56.123

我有一个入口控制器

我已经安装了 metallb,它可以对流量进行负载平衡并将其发送到任何 IP 地址。

现在如何为我的 kubernetes 集群端点提供静态 IP?

我应该购买虚拟 IP 并将其配置为 metallb 吗?如果有怎么办?

或者

我是否应该在上述所有节点中配置keepalived并配置虚拟IP。在这种情况下,我可以为所有节点配置相同的虚拟 IP 吗?不会有IP冲突吗?如果其中一个节点死亡,虚拟 IP 会自动分配给另一个活着的节点吗?如果是这样,自动将 IP 地址分配给另一个活动的节点的通常持续时间是多少?

4

2 回答 2

1

MetalLB 目前处于测试阶段。阅读有关项目成熟度的信息,并确保您通过彻底阅读官方文档来了解自己。

MetalLB 可以使用简单的 Kubernetes 清单或 Helm 进行部署。本示例的其余部分假定 MetalLB 已按照安装说明进行部署。MetalLB 需要一个 IP 地址池才能获得 ingress-nginx 服务的所有权。该池可以在名为 config 的 ConfigMap 中定义,该 ConfigMap 位于与 MetalLB 控制器相同的命名空间中。这个 IP 池必须专门供 MetalLB 使用,您不能重复使用 Kubernetes 节点 IP 或 DHCP 服务器分发的 IP。

给定以下 3 节点 Kubernetes 集群(以添加外部 IP 为例

$ kubectl get node
NAME     STATUS   ROLES    EXTERNAL-IP
host-1   Ready    master   203.0.113.1
host-2   Ready    node     203.0.113.2
host-3   Ready    node     203.0.113.3

创建以下 ConfigMap 后,MetalLB 获得池中 IP 地址之一的所有权,并相应地更新 ingress-nginx 服务的 loadBalancer IP 字段。

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 203.0.113.10-203.0.113.15
于 2021-05-19T09:31:42.707 回答
0

您在 MetalLB 配置文件中包含 IP。或者真的只是一个,因为这就是它所需要的。https://metallb.universe.tf/configuration/#layer-2-configuration

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

这适用于 L2 模式,这更可能是您想要的,但您应该向上游网络确认无偿 ARP 将 1) 工作并且 2) 不会让您被禁止进入网络。从“您刚刚设置的随机 VPS”的基线来看,这些都没有得到保证。

于 2021-05-19T09:03:40.800 回答