我的目标是从集群外部的机器(另一台机器)访问部署在我的机器(集群)上的某个 kubernetes 服务。我使用“Ingress”对象公开这些服务。我有一个单节点 kubernetes 集群,我在该集群上安装了 nginx-ingress 控制器,该集群的外部 IP 由 Metal-LB 负载均衡器分配。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d
nginx LoadBalancer 10.105.168.2 192.168.1.240 8080:32622/TCP 46h
我能够使用这样生成的外部 IP 访问我机器上的负载均衡器。但无法使用外部 IP 从集群(机器)外部的另一台机器访问它。在另一台机器上使用外部 IP 会导致连接超时错误。
通过 kubectl apply -f 安装 nginx ingress-controllerhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.22.0/deploy/mandatory.yaml并公开为负载均衡器类型。
metallb 的配置如下:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.1.240/28
PS:两台机器都在同一个网络上。