【发布时间】: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