首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能让MetalLB到iP附近去吗?

你能让MetalLB到iP附近去吗?
EN

Stack Overflow用户
提问于 2020-06-15 01:41:12
回答 3查看 2.3K关注 0票数 4

我有一个裸金属库贝团簇(PI团簇)。它有一个简单的hello网页,分散在各个节点上,运行良好。从那以后,我创建了一个服务,让它暴露在公共方面的事情,但网站不会渲染。看来我没有要发表的公告了。

我的config.map很简单。

代码语言:javascript
复制
metadata:
  name: metallb
  namespace: metallb-system
  selfLink: /api/v1/namespaces/metallb-system/configmaps/metallb
  uid: 89d1e418-989a-4869-9da1-244409f8f700
  resourceVersion: '1086283'
  creationTimestamp: '2020-06-09T00:34:07Z'
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"v1","data":{"config":"address-pools:\n- name: default\n 
      protocol: layer2\n  addresses:\n  -
      192.168.1.16-192.168.1.31\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"metallb","namespace":"metallb-system"}}
  managedFields:
    - manager: kubectl
      operation: Update
      apiVersion: v1
      time: '2020-06-09T00:34:07Z'
      fieldsType: FieldsV1
      fieldsV1:
        'f:data':
          .: {}
          'f:config': {}
        'f:metadata':
          'f:annotations':
            .: {}
            'f:kubectl.kubernetes.io/last-applied-configuration': {}
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.16-192.168.1.31
kind: ConfigMap

我的服务看起来很好:

代码语言:javascript
复制
testapp-service   LoadBalancer   10.107.213.151   192.168.1.16   8081:30470/TCP   7m40s

从主节点上,我可以curl 192.168.1.16:8081并获得我期望的数据。但是,如果我转到192.168.1.0网络上的任何其他机器,我就无法让它呈现。

我知道公共地址不是重叠的。我从我的DHCP服务器中屏蔽了192.168.1.16-192.168.1.31范围,所以在这个范围内什么也没有。

那么,如何才能让我的主机-001节点宣布它正在处理192.168.1.16的流量呢?(它只有在.250的地址,并且有一个声明,但它不是服务,等等)。

我用Ubuntu 20在Raspberry PI 4上。192地址是事物的wifi侧,10是事物的有线侧。

谢谢,尼克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-18 20:50:01

在Layer2模式下,您给metallb和节点in的地址范围必须位于同一个子网中。节点的IP地址是什么?

预定服务IP (192.168.1.16)的分组必须首先到达集群节点的第二层域,以便能够将分组路由到处理服务IP的节点,这意味着节点IP也必须在192.168.1.0网络中。

如果只将主节点连接到公共网络,请尝试在扬声器守护进程中添加一个nodeAffinity,以便仅在这些节点上创建扬声器荚。

票数 4
EN

Stack Overflow用户

发布于 2022-10-29 12:16:19

由于MetalLB v0.13.0,所以配置是通过CRD进行的,而不是ConfigMap,所以您将使用IPAddressPool对象。

如果您想使用第二层模式,请记住添加一个L2Advertisement对象,否则MetalLB 将不会响应ARP请求

在匆忙中,我完全跳过了文档的那一部分,浪费了30分钟来调试这个问题。

票数 0
EN

Stack Overflow用户

发布于 2022-11-08 16:42:29

我的裸金属簇也有同样的问题。就像Roger上面的回答一样,我忘了包括L2Advertisement,但不仅如此,我还得修补一下才能使它变得严格:false

这就是我安装MetalLB (裸金属负载平衡器)的方式。

请参阅https://metallb.universe.tf/installation/并确保按照https://metallb.universe.tf/configuration/进行配置

在我的实验室中,我修补了kubeproxy配置,并将strictarp:改为false。

·kubectl edit configmap -n kube-system kube-proxy

代码语言:javascript
复制
apiVersion: kubeproxy.config.k8s.io/v1alpha1
        kind: KubeProxyConfiguration
        mode: ""
        ipvs:
        strictARP: false

·然后运行以下·kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml

·我有以下脚本要运行(从配置页面的示例中复制和编辑)。在我的例子中,我在~/k8s/MetalLB创建了这个文件来配置MetalLB

·kubectl apply -f ip-addresspool.yaml (确保编辑要分配给kubernetes服务的IP地址池)

·kubectl apply -f L2advertisement.yaml

沃伊拉,我们有一个可以工作的裸金属库伯奈特斯星系团和一个LoadBalancer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62380153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档