如何使用节点端口Kubernetes连接到主节点

时间:2020-10-27 14:10:56

标签: docker kubernetes kubernetes-pod kubernetes-networking

我有两个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通两个豆荚。请在连接服务器和客户端方面帮助我。非常感谢您的帮助。谢谢您的大力支持。

2 个答案:

答案 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)