【问题标题】:How to connect to the master node using nodeport Kubernetes如何使用 nodeport Kubernetes 连接到主节点
【发布时间】: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


【解决方案1】:

您需要使用端口转发来访问集群中的应用程序
(见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。

【讨论】:

  • 感谢@CasperDijkstra 的精彩建议,我尝试了端口转发,但它不起作用。
【解决方案2】:

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

【讨论】:

  • 嗨@confusedgenius,我试过了,但它不起作用
猜你喜欢
  • 1970-01-01
  • 2020-07-08
  • 2020-11-06
  • 2019-05-16
  • 2021-01-02
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多