我无法访问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
从每个节点/主机,我可以卷曲到该IP和端口,并可以获取Nginx:
<h1>Welcome to nginx!</h1>
到目前为止,太好了。但是:
我仍然想念的是从我的计算机访问该服务(nginx)。 我可以尝试通过其IP:PORT访问每个节点(主节点+ 2个从节点),但没有任何反应。最终目标是拥有一个可以访问该服务的域,但是我猜不出应该使用IP。
我缺少什么?
MetalLB是否应该公开我的3个可能的IP? 我应该在每台服务器上添加其他东西作为反向代理吗?
我在这里问这个问题是因为所有关于裸机/ VPS(非aws,GKE等)的文章/教程都是在本地主机上的kube上执行的,而错过了这个基本问题。
谢谢。
答案 0 :(得分:1)
您缺少的是路由策略
您的外部IP地址必须与您的节点属于同一网络,或者您可以在默认网关级别添加到外部地址的路由,并为每个地址使用静态NAT