【问题标题】:Kubernetes NodePort doesn't return the response from the containerKubernetes NodePort 不返回来自容器的响应
【发布时间】:2018-10-09 19:01:45
【问题描述】:

我已经开发了一个容器化的 Flask 应用程序,我想用 Kubernetes 来部署它。但是,我无法将 Container 的端口与 Service 正确连接。

这是我的部署文件:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: <my-app-name>
spec:
  replicas: 1

  template:
    metadata:
      labels:
        app: flaskapp
    spec:
      containers:
      - name: <container-name>
        image: <container-image>
        imagePullPolicy: IfNotPresent
        ports:  
        - containerPort: 5000
          name: http-port
---
apiVersion: v1
kind: Service
metadata:
  name: <service-name>
spec:
  selector:
    app: flaskapp
  ports:
  - name: http
    protocol: TCP
    targetPort: 5000
    port: 5000
    nodePort: 30013
  type: NodePort

当我运行kubectl get pods 时,似乎一切正常:

NAME                              READY     STATUS    RESTARTS   AGE
<pod-id>                          1/1       Running   0          7m

当我运行kubectl get services 时,我得到以下信息:

NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         
<service-name>        NodePort    10.105.247.63   <none>      5000:30013/TCP
...

但是,当我将以下 URL 提供给浏览器时:10.105.247.63:30013,浏览器会继续加载,但不会从应用程序返回数据。

有谁知道问题出在哪里?好像服务没有连接到容器的端口。

【问题讨论】:

    标签: docker flask kubernetes


    【解决方案1】:

    30013 是不在集群 IP 中的节点上的端口。要获得回复,您必须连接到 &lt;IP-address-of-the-node&gt;:30013。要获取节点列表,您可以:

    kubectl get nodes -o=wide
    

    您也可以通过CLUSTER-IP,但您必须使用暴露的端口500010.105.247.63:5000

    【讨论】:

    • 你好里科!谢谢您的回答!得到节点列表后(只有一个,因为我用的是Minikube),节点的IP没有显示!你知道我怎么能找到它吗?再次感谢您!
    • 这是你的 minikube 虚拟机的 IP。
    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 2017-11-02
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多