0

我有两个 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 上都检索到 Connection denied

 curl -v https://192.168.56.105:31700    

我能够 ping 两个 pod。请帮助我连接服务器和客户端。高度赞赏帮助。感谢您的大力支持。

4

2 回答 2

0

在您的 Dockerfile 中,它应该是“EXPOSE 80”而不是“EXPOSE 31700”(假设您的容器在端口 80 上侦听)

于 2020-10-27T15:28:12.453 回答
0

您需要使用端口转发来访问集群中的应用程序
(请参阅https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/)。

您可以使用以下命令将本地端口转发到Pod 上的端口

kubectl port-forward service/kubernetes <local-port>:443

myapp-service正在暴露(收听)31700,但您应该使用端口 80。

于 2020-10-27T14:23:50.807 回答