我已在具有3个公共ip的3个VM(1个主节点和2个工作节点)上安装了Permise kubernetes。我尝试通过像这样的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地址时,无论在我的主节点上还是在工作节点上,它都会返回Connection拒绝。我确信防火墙确实允许端口,因为我尝试通过以下方式使用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
...
我应该如何继续解决问题?
非常感谢您的帮助。
答案 0 :(得分:0)
您缺少有关服务如何连接到pod的规范。
这通过指定两件事来完成:
app:nginx
)app:nginx
然后,一旦您应用了这些资源,节点端口服务就会将nginx pod映射到节点端口。
我强烈建议您阅读本文,以更好地了解服务的运行方式:https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/