【发布时间】:2020-05-23 21:20:46
【问题描述】:
我已经在 3 个虚拟机(1 个主节点和 2 个工作节点)上安装了我的许可 kubernetes,具有 3 个公共 IP。我尝试通过部署一个带有 nodeport 的 nginx 实例来验证,如下所示:
kubectl create deployment nginx --image=nginx
kubectl create service nodeport nginx --tcp=80:80
nodeport 为我分配了一些端口范围,例如 30269:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5d21h
nginx NodePort 10.107.68.135 <none> 80:30269/TCP 91m
当我尝试在此端口上卷曲我的 IP 地址时,无论在我的主节点还是在工作节点上,它都会返回连接被拒绝。我确信防火墙确实允许这些端口,因为我尝试使用 docker 在此端口上运行 nginx:
docker run -p 30269:80 -d nginx
我可以通过在端口 30269 上的公共 IP 上运行 curl 来访问 nginx 默认页面
如果我运行netstat,输出是这样的
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:30269 0.0.0.0:* LISTEN 3396/kube-proxy
tcp 0 0 127.0.0.1:6784 0.0.0.0:* LISTEN 3741/weaver
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 2726/kubelet
...
我应该如何解决问题?
非常感谢您的帮助。
【问题讨论】:
-
虚拟机同时拥有公有 IP 和私有 ip,相同的 curl 可以通过公共 ip 工作,但不能通过私有 ip?
-
VM网络是从主机桥接的,所以那里只有公网IP,没有私网IP
-
你能展示一下你是如何安装集群的吗?
标签: nginx kubernetes