我已经开发了一个容器化的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时,浏览器会继续加载,但从不从应用程序返回数据。
有人知道问题可能在哪里吗?该服务似乎未连接到容器的端口。
提前谢谢!
答案 0 :(得分:2)
30013
是节点上不在群集IP中的端口。要获得回复,您必须连接到<IP-address-of-the-node>:30013
。要获取节点列表,您可以:
kubectl get nodes -o=wide
您也可以通过CLUSTER-IP
,但必须使用公开的端口5000
:10.105.247.63:5000