MetalLB到Internet的外部IP

时间:2019-07-18 17:17:25

标签: kubernetes kubeadm bare-metal-server metallb

我无法访问MetalLB负载均衡器分配的公共IP

我在Contabo中创建了一个Kubernetes集群。它的1名主人和2名工人。每个人都有自己的公共IP。

我用kubeadm +法兰绒做过。后来,我确实安装了MetalLB以使用负载平衡。

我使用此清单来安装nginx:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1
        ports:
        - name: http
          containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
  - name: http
    port: 8080
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

它工作正常,pod正在运行。我在下面看到了外部IP地址:

kubectl get services

enter image description here 从每个节点/主机,我可以卷曲到该IP和端口,并可以获取Nginx:

<h1>Welcome to nginx!</h1>

到目前为止,太好了。但是:

我仍然想念的是从我的计算机访问该服务(nginx)。 我可以尝试通过其IP:PORT访问每个节点(主节点+ 2个从节点),但没有任何反应。最终目标是拥有一个可以访问该服务的域,但是我猜不出应该使用IP。

我缺少什么?

MetalLB是否应该公开我的3个可能的IP? 我应该在每台服务器上添加其他东西作为反向代理吗?

我在这里问这个问题是因为所有关于裸机/ VPS(非aws,GKE等)的文章/教程都是在本地主机上的kube上执行的,而错过了这个基本问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

您缺少的是路由策略

您的外部IP地址必须与您的节点属于同一网络,或者您可以在默认网关级别添加到外部地址的路由,并为每个地址使用静态NAT