【发布时间】:2020-10-27 14:10:56
【问题描述】:
我有两个 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))
吊舱: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 两个 pod。请帮助我连接服务器和客户端。高度赞赏帮助。感谢您的大力支持。
【问题讨论】:
-
好像你在80端口暴露了服务?另外,您确定要使用 https 连接到 80 端口吗?
-
嗨,@MarkusDresch 我没有收到您的问题,请您向我澄清一下。我已经暴露了 31700 目标端口的节点端口是 80
-
但是您的服务器监听 31700,因此目标端口 80 将不起作用。 80 在听什么?
-
嗨@MarkusDresch,它正在收听31700。另外,我提供了服务节点端口并更新了问题。非常感谢您的帮助,非常感谢。
-
但您仍然将 31700 转发到 80。您的 targetPort 必须是您的 pod 侦听的端口。
标签: docker kubernetes kubernetes-pod kubernetes-networking