我正在使用 Kubespray 和 MetalLB。我设法使用 LoadBalancer 创建了一项服务。问题是,外部 IP 只能由任一 VM 节点访问。
仅供参考,VM 节点为:10.214.47.21、10.214.47.22 和 10.214.47.23(均充当工作节点和控制器)。
LB 生成的负载均衡器外部 IP 为 10.214.47.1。同级虚拟机(相同的 10.214.47/24,但不是集群虚拟机)可以 ping 通它,但无法使用 curl 访问服务。确切的 curl 仅在 3 个集群虚拟机中的一个内有效。集群和同级虚拟机的防火墙均已关闭/失效。
这是我在 Kubespray 设置期间的配置,具体针对 MetalLB:
插件.yml:
+metallb_enabled: true
+metallb_speaker_enabled: false
+metallb_protocol: "layer2"
+metallb_config:
+ controller:
+ nodeselector:
+ kubernetes.io/os: "linux"
+ tolerations:
+ - key: "node-role.kubernetes.io/control-plane"
+ operator: "Equal"
+ value: ""
+ effect: "NoSchedule"
+ address_pools:
+ primary:
+ ip_range:
+ - 10.214.47.0/24
+ auto_assign: true
+ avoid_buggy_ips: true # When set to true, .0 and .255
k8s-net-calico.yml:
+calico_advertise_service_loadbalancer_ips: "{{ metallb_config.address_pools.primary.ip_range }}"
我在这里做错了什么?