我有一个裸金属库贝团簇(PI团簇)。它有一个简单的hello网页,分散在各个节点上,运行良好。从那以后,我创建了一个服务,让它暴露在公共方面的事情,但网站不会渲染。看来我没有要发表的公告了。
我的config.map很简单。
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我的服务看起来很好:
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是事物的有线侧。
谢谢,尼克
发布于 2020-06-18 20:50:01
在Layer2模式下,您给metallb和节点in的地址范围必须位于同一个子网中。节点的IP地址是什么?
预定服务IP (192.168.1.16)的分组必须首先到达集群节点的第二层域,以便能够将分组路由到处理服务IP的节点,这意味着节点IP也必须在192.168.1.0网络中。
如果只将主节点连接到公共网络,请尝试在扬声器守护进程中添加一个nodeAffinity,以便仅在这些节点上创建扬声器荚。
发布于 2022-10-29 12:16:19
由于MetalLB v0.13.0,所以配置是通过CRD进行的,而不是ConfigMap,所以您将使用IPAddressPool对象。
如果您想使用第二层模式,请记住添加一个L2Advertisement对象,否则MetalLB 将不会响应ARP请求。
在匆忙中,我完全跳过了文档的那一部分,浪费了30分钟来调试这个问题。
发布于 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
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
https://stackoverflow.com/questions/62380153
复制相似问题