CODE/2022-09-20

k8s 中 port、nodePort、targetPort 概念的区分

1. 三种类型端口所应用的位置不同

plain text_snippet
Plain Text · 5 lines|
port是service端口,即k8s中服务之间的访问端口
targetport是pod(也就是容器)的端口
nodeport是容器所在node节点的端口,即外部机器可访问的端口。(通过nodeport类型的service暴露给集群节点)

2. 三种类型端口的作用不同

  • port
port 的主要作用是集群内其他 pod 访问本 pod 时,需要一个 port,如nginx的 pod 访问 mysql 的 pod,那么 mysql 的 pod 的 service 可以如下定义:
plain text_snippet
Plain Text · 10 lines|
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
ports:
- port: 33306
targetPort: 3306
selector:
name: mysql-pod
由此可以这样理解,port 是 service 的 port,nginx 访问 service 的 3306 端口。
  • targetport
容器的端口(最根本的端口入口),与制作容器时暴露的端口一致(DockerFile 中 EXPOSE)。
targetport 是 pod 暴露出来的端口,当 nginx 的一个请求到达 service 的 3306 端口时,service 就会根据 selector 中的 name,把此请求转发到 mysql-pod 这个 pod 的 3306 端口上。
  • nodeport
nodeport 就很好理解了,它是集群外客户端访问集群内服务时所访问的端口,比如客户访问下面的集群中的 nginx,就是这样的方式。
plain text_snippet
Plain Text · 12 lines|
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort # 有配置NodePort,外部流量可访问k8s中的服务
ports:
- port: 30080 # 服务访问端口
targetPort: 80 # 容器端口
nodePort: 30001 # NodePort
selector:
name: nginx-pod

3. 总结

  • port:service 暴露在 cluster ip 上的端口,clusterIP:port 是提供给集群内部客户访问 service 的入口
  • nodePort:首先,nodePort 是 kubernetes 提供给集群外部客户访问 service 入口的一种方式(另一种方式是 LoadBalancer),所以,nodeIP:nodePort 是提供给集群外部客户访问 service 的入口
  • targetPort:targetPort 是 pod 上的端口。从 port 和 nodePort 上来的数据,经过 kube-proxy 流入到后端 pod 上的 targetPort,最终进入容器
  • port、nodePort:总的来说,port 和 nodePort 都是 service 的端口,前者暴露给集群内客户访问服务,后者暴露给集群外客户访问服务。从这两个端口到来的数据都需要经过反向代理 kube-proxy 流入后端 pod 的 targetPod,从而到达 pod 中的容器
COMPANION ESSAYS / 思想脉络与互照篇目
同卷深读2026-05-22 ·

python3安装在centos详细教程

同属「系统工程卷」脉络衍生思考与工程推演推演阅读 →
跨界互照2026-08-22 ·

我的书架:03|金融经管:经济运行、金融体系与企业治理

我的书架:03|金融经管:经济运行、金融体系与企业治理

跨领域对照思辨 · 从「思想随笔」视界互为印证推演阅读 →
RELATED INDEX / 相关阅读索引
柯航hang.ke·© 2014—2026
CC BY-NC 4.0·