当前位置: 首页 > news >正文

K8s port、targetPort和nodePort区别

在 Kubernetes 中,port 和 targetPort 是 Service 和 Pod 配置中的两个重要字段,用于定义网络流量的路由规则。以下是它们的详细解释和区别:

1. port(Service 的端口)

  • 定义port 是 Kubernetes Service 暴露的端口,用于接收集群内部或其他 Service 的请求。
  • 作用
    • 其他 Pod 或 Service 通过 port 访问该 Service。
    • 例如,如果 Service 的 port 是 80,其他 Pod 可以通过 http://<service-name>.<namespace>.svc.cluster.local:80 访问该 Service。
    • 示例
      apiVersion: v1
      kind: Service
      metadata:name: my-service
      spec:selector:app: my-appports:- protocol: TCPport: 80       # Service 暴露的端口targetPort: 8080  # Pod 的目标端口

2. targetPort(Pod 的目标端口)

  • 定义targetPort 是 Service 将流量转发到的 Pod 的端口。
  • 作用
    • 它指定 Pod 中实际监听流量的端口(即容器暴露的端口)。
    • 如果未显式指定 targetPort,Kubernetes 默认使用 port 的值。
  • 示例
apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-appports:- protocol: TCPport: 80       # Service 暴露的端口targetPort: 8080  # Pod 的目标端口(容器监听的端口)

 3. nodePort

  • nodePort 是 Service 的一种类型(NodePort)的扩展字段,用于将 Service 暴露到集群外部(通过节点的 IP 和端口)。
  • port 和 targetPort 是 Service 内部路由的字段,而 nodePort 是外部访问的入口。
  • 示例:
apiVersion: v1
kind: Service
metadata:name: my-service
spec:type: NodePortselector:app: my-appports:- port: 80          # Service 内部端口targetPort: 8080  # Pod 的目标端口nodePort: 30007   # 节点暴露的端口(外部通过 <node-ip>:30007 访问)

4. 实际应用场景

  • 场景 1:Pod 监听非标准端口
    • 如果 Pod 的容器监听 8080 端口,但希望 Service 对外暴露 80 端口:
ports:- port: 80targetPort: 8080
  • 场景 2:多端口 Service
    ports:- name: httpport: 80targetPort: 8080- name: httpsport: 443targetPort: 8443

  • 场景 3:直接使用 targetPort 作为容器端口
    • 如果 Pod 的容器端口和 Service 的 port 相同,可以省略 targetPort
      ports:- port: 80  # 默认 targetPort 也是 80

总结

  • port:Service 暴露的端口,用于接收集群内部的请求。
  • targetPort:Pod 中实际监听流量的端口(容器端口)。
  • nodePort:仅用于 NodePort 类型的 Service,用于外部访问。

通过合理配置 port 和 targetPort,可以实现灵活的网络流量路由,适应不同的应用场景。

相关文章:

  • AI歌手Yuri出道:GenAI,透露着新的AI产业机遇?
  • 【水印论文阅读1】将水印规则的定义域从离散的符号空间转移到连续的语义空间
  • 在shell中直接调用使用R
  • Vite 打包原理详解 + Webpack 对比
  • 电子电气架构 --- 涵盖“诊断与 ECU 平台”领域特有项目要求(下)
  • FPGA 40G到100G光纤数据传输QSFP
  • Netty入门案例:简单Echo服务器(同步)
  • 【Linux高级全栈开发】2.2.3 UDP的可靠传输协议QUIC
  • 路径遍历攻击与修复
  • 非功能测试
  • 【论文阅读 | CVPR 2025 |MambaVision:一种混合 Mamba-Transformer 视觉骨干网络】
  • 【Android】蓝牙相关
  • 基于大模型的肺结核诊疗全流程预测与干预研究报告
  • 什么是国际期货?期货交易平台搭建
  • debian挂载新硬盘后不识别怎么办?
  • 将ONNX模型转换为(OPENMV可用的格式)TensorFlow Lite格式
  • Elasticsearch(ES)分页
  • 预训练语言模型
  • 使用Puppeteer提取页面内容的技巧
  • 航拍图像中的“生命线”:基于YOLOv5的7类应急目标检测实践