gpt4 book ai didi

kubernetes - MetalLB 与 Kubernetes,无法连接到 VIP 或端口

转载 作者:行者123 更新时间:2023-12-03 21:00:42 34 4
gpt4 key购买 nike

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

部署:

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

  • 已验证:
  • 部署 (NGINX) 在 CNI IP (10.44.0.1:80) 上工作。使用 curl 从节点托管容器到容器 IP 进行验证。
  • 部署 (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

    结果

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

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

  • 笔记本电脑的结果
  • 〜用户$ curl 192.168.0.102:31854
  • curl: (7) 连接 192.168.0.102 端口 31854 失败:连接被拒绝

  • 来自笔记本电脑的 ARP 请求 .102 是节点,.240 是 MetalLB 分配的 VIP
  • 〜用户$ arp 192.168.0.102
  • ? (192.168.0.102) 在 dc:a6:32:b:fc:d on en0 ifscope [以太网]
  • 〜用户$ arp 192.168.0.240
  • ? (192.168.0.240) 在 dc:a6:32:b:fc:d on en0 ifscope [以太网]
  • 最佳答案

    我们遇到了一个以完全相同的方式表现出来的问题,我们将其追溯到将 MetalLB 网络与另一个网络(我们的办公室无线网络)桥接的 Windows 操作系统网桥。
    还有其他可能以类似方式出现的问题(例如防火墙配置),因此要验证桥接网络是否导致问题,请运行

    arping -I <interface> <target ip>
    在哪里 <interface>是 MetalLB 网络上可路由的接口(interface)(在您的情况下为 en0)和 <target ip>是 Kubernetes 服务的外部 IP(在您的示例中为 192.168.0.240)。如果是网桥导致问题,您将看到与 2 个不同 MAC 地址关联的 IP(或更多,取决于网桥的数量)。
    一旦 MetalLB 分配了 IP 地址,桥接网络似乎就可以工作,即使在重新部署服务或部署新服务时也是如此。
    如果存在网桥并且您必须对其进行维护,请考虑在 BGP 模式下配置 MetalLB。

    关于kubernetes - MetalLB 与 Kubernetes,无法连接到 VIP 或端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57985614/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com