Kubernetes NodePort不从容器返回响应

时间:2018-10-09 19:01:45

标签: docker flask kubernetes

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

这是我的部署文件:

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时,浏览器会继续加载,但从不从应用程序返回数据。

有人知道问题可能在哪里吗?该服务似乎未连接到容器的端口。

提前谢谢!

1 个答案:

答案 0 :(得分:2)

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

kubectl get nodes -o=wide

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