你如何让 MetalLB 围绕它的 iP 进行 arp?
Hw do you get MetalLB to arp around it's iP?
我有一个裸机 kube 集群(PI 集群)。它有一个简单的 hello world 网页,在各个节点上分开,并且运行良好。从那以后,我创建了一项服务,让它暴露在事物的 public 一侧,但该网站不会呈现。好像还没有发布公告
我的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 网络上的任何其他机器,我根本无法渲染它。
我知道 public 地址没有重叠。我的 DHCP 服务器屏蔽了 192.168.1.16-192.168.1.31 范围,因此该范围内没有任何内容。
那么如何让我的 master-001 节点宣布它正在处理 192.168.1.16 的流量? (它的唯一地址为 .250,并且确实公布了该地址,但该地址不是服务等)。
我在 Raspberry PI 4s 上使用 Ubuntu 20。 192 地址是 wifi 端,10. 是有线端。
谢谢,
尼克
在 Layer2 模式下,the address range you give to metallb and the node IPs must be in same subnet.节点的 IP 地址是多少?
发往服务 IP (192.168.1.16) 的数据包必须首先到达集群节点的第 2 层域,以便数据包可以路由到处理服务 IP 的节点,这意味着节点 IP 也必须在 192.168 .1.0 网络。
如果只有主节点连接到 public 网络,请尝试在扬声器守护程序集上添加 nodeAffinity,以便仅在这些节点上创建扬声器 pods。
我有一个裸机 kube 集群(PI 集群)。它有一个简单的 hello world 网页,在各个节点上分开,并且运行良好。从那以后,我创建了一项服务,让它暴露在事物的 public 一侧,但该网站不会呈现。好像还没有发布公告
我的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 网络上的任何其他机器,我根本无法渲染它。
我知道 public 地址没有重叠。我的 DHCP 服务器屏蔽了 192.168.1.16-192.168.1.31 范围,因此该范围内没有任何内容。
那么如何让我的 master-001 节点宣布它正在处理 192.168.1.16 的流量? (它的唯一地址为 .250,并且确实公布了该地址,但该地址不是服务等)。
我在 Raspberry PI 4s 上使用 Ubuntu 20。 192 地址是 wifi 端,10. 是有线端。
谢谢, 尼克
在 Layer2 模式下,the address range you give to metallb and the node IPs must be in same subnet.节点的 IP 地址是多少?
发往服务 IP (192.168.1.16) 的数据包必须首先到达集群节点的第 2 层域,以便数据包可以路由到处理服务 IP 的节点,这意味着节点 IP 也必须在 192.168 .1.0 网络。
如果只有主节点连接到 public 网络,请尝试在扬声器守护程序集上添加 nodeAffinity,以便仅在这些节点上创建扬声器 pods。