问题描述
我正在学习kubernetes的工作原理,并且已经部署了一个基本的React应用(使用create-react-app)。
在我的yaml文件中,设置了 containerPort:80 ,然后使用了以端口80为目标的NodePort服务。一切正常。
但是。为什么仅在端口80上起作用?我试过containerPort 3000,不起作用。也不是8080等。
端口80有什么特别之处吗?为什么仅在使用该端口时才起作用?
以下是我的Yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: default
spec:
replicas: 1
selector:
matchLabels:
name: my-app
template:
metadata:
labels:
name: my-app
spec:
containers:
- name: my-app
image: <my repo>/my-app
ports:
- containerPort: 80
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: my-app
namespace: default
spec:
type: NodePort
selector:
name: my-app
ports:
- port: 80
targetPort: 80
protocol: TCP
nodePort: 30001
解决方法
我想basic react app (using create-react-app)
在80端口上服务。
您可以在index.js
或npm start
上进行检查。 (我不擅长React.js)
containerPort
代表publishing/exposing port。
因此,当您尝试发布3000端口时,没有任何服务,但是您的docker image(容器)正在80端口上提供内容