【问题标题】:react kubernetes deployment, port 80 only works反应 kubernetes 部署,端口 80 仅适用
【发布时间】:2025-12-11 13:45:01
【问题描述】:

我正在学习 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

【问题讨论】:

  • 容器运行程序;该程序正在侦听哪个端口?这应该与 pod 的 containerPort 和服务的 targetPort 匹配。除了作为默认 HTTP 端口之外,端口 80 并没有什么神奇之处,但是 Kubernetes 配置中的两个端口需要与容器中的进程所期望的相匹配。

标签: docker kubernetes deployment yaml containers


【解决方案1】:

我猜basic react app (using create-react-app) 服务于 80 端口。

您可以在index.jsnpm start 上查看。 (我不擅长 React.js)

containerPort 代表publishing/exposing port

因此,当您尝试发布 3000 端口但您的 docker 映像(容器)在 80 端口上提供内容时,没有什么可以提供服务

【讨论】:

  • React 应用在 3000 端口上提供服务。这就是为什么只有 80 个可以工作的原因
  • 你能显示你的Dockerfile和image: &lt;my repo&gt;/my-app的入口点吗?
最近更新 更多