我们有一个本地kubernetes集群,该集群设置了1个主控和2个工人,以及带有calico网络的metallb。问题是我们的应用程序没有从外部打开。
我可以从我的K8S群集中卷曲外部IP,但不能从浏览器中打开它。
主节点和工作节点的IP范围与配置映射地址池不同-
主节点/工作节点-> a.b.c.d
Metallb config.yaml->
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- w.x.y.z
我想知道metallb config.yaml中的地址范围是否需要与群集网络相同?因为当我给kubernetes集群IP范围时,应用程序是从外部打开的,否则不会打开。
答案 0 :(得分:0)
要使用MetalLB,您的分配IP范围必须可从群集网络访问。例如,如果您的群集IP为192.168.1.0 / 24,则可以分配范围192.168.1.1-192.168.1.254
因此,如果您要在ConfigMap
中指定
...
addresses:
- 192.168.1.1-192.168.1.254
它将起作用。
但是,如果您将群集IP设置为例如192.168.1.0/28,则只能使用192.168.1.1-192.168.1.14范围内的地址。
请记住,网络配置和正确的ConfigMap并非全部。您必须创建service(loadbalancer)才能将您的集群暴露给世界。
请查看this MetalLB教程。它包含正确的MetalLB集的示例。
答案 1 :(得分:0)
在第2层模式下,您赋予metallb的IP地址范围应在群集节点网络范围内。您需要从群集外部发出的IP数据包首先到达群集子网。然后,接收到目的地为metallb分配的虚拟IP的流量的端点(可能是将群集子网连接到外部网络的路由器)可以执行ARP请求,以找出当前拥有虚拟IP的节点上接口的MAC地址。这就是外部数据包的路由方式。