我有两个Pod在群集中的两个不同VM上运行,一个在主节点上,另一个在工作节点上。我在服务器端具有以下docker文件公开端口31700,服务器VM节点的IP地址为192.168.56.105,客户端VM的IP地址为192.168.56.106。
Dockerfile
EXPOSE 31700
服务器文件
sock = socket()
sock.bind(('0.0.0.0',31700))
客户端文件
sock.connect(('192.168.56.105',31700))
Pod:kubectl get pods
NAME STATUS ROLES AGE VERSION
kmaster Ready master 25h v1.19.3
knode Ready worker 25h v1.19.3
服务:kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
myapp-service NodePort 10.108.144.147 <none> 80:31700/TCP 49m
服务的详细信息如下:
kubectl describe services myapp-service
Name: myapp-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=edge-server
Type: NodePort
IP: 10.108.144.147
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 31700/TCP
Endpoints: 192.168.189.5:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
当我尝试通过以下命令ping时,我在两个VM上检索到连接被拒绝
curl -v https://192.168.56.105:31700
我能够ping通两个豆荚。请在连接服务器和客户端方面帮助我。非常感谢您的帮助。谢谢您的大力支持。
答案 0 :(得分:0)
您需要使用端口转发来访问集群中的应用程序
(请参阅https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/)。
您可以使用以下命令将 local 端口转发到Pod上的端口:
kubectl port-forward service/kubernetes <local-port>:443
myapp-service
暴露(监听)31700,但是您应该使用端口80。
答案 1 :(得分:0)
在Dockerfile中,它应该是“ EXPOSE 80”而不是“ EXPOSE 31700”(假设您的容器正在侦听端口80)