我的集群中有三个节点,它们位于我无法控制的防火墙后面。该防火墙有一个连接到它的公共 IP,可以将流量转发到我的 kubernetes 节点。它向我的节点开放了端口 80 和 443。
最初,我在 MetalLB 配置中使用公共 IP,如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 186.xx.xx.xx-186.xx.xx.xx
Run Code Online (Sandbox Code Playgroud)
但在阅读了另一个问题的答案后,我猜测它是无效的,因为 MetalLB 使用的 IP 需要与节点位于同一子网中?而且他们都使用私有IP。
当我在本地测试侦听端口 80 的 HTTP 服务器并在实际节点(不在集群中)上运行它时,我能够从网络外部的公共 IP 上获得响应。
所以我的问题是: 如何让 MetalLB 或 Nginx 入口控制器在端口 80 和 443 上侦听传入请求?
当使用curl 186.xx.xx.xx:80集群中的节点时,我会收到来自 nginx 入口控制器的响应。但在节点外部执行此操作时则不然。