当前位置: 首页 > 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,可以实现灵活的网络流量路由,适应不同的应用场景。

http://www.lryc.cn/news/576013.html

相关文章:

  • GitHub Actions与AWS OIDC实现安全的ECR/ECS自动化部署
  • TCP/IP协议简要概述
  • 国产鸿蒙系统开放应用侧载,能威胁到Windows地位吗?
  • 工作台-01.需求分析与设计
  • qq邮箱 新版 怎么去掉个性签名?
  • Java 大视界 -- Java 大数据在智能教育学习社群知识共享与协同学习促进中的应用(326)
  • 参考nlohmann json设计Cereal宏 一行声明序列化函数
  • vscode把less文件生成css文件配置,设置生成自定义文件名称和路径
  • ​​Git提交代码Commit消息企业级规范
  • 自动驾驶nuPlan数据集-入门使用和可视化操作
  • 【NodeJs】【npm】npm安装electron报错
  • 智能体记忆原理-prompt设计
  • [Ethernet in CANoe]1--SOME/IP arxml文件格式的区别
  • 基于Spring Cloud Alibaba构建微服务架构的实践探索
  • Ubuntu 部署 ResilioSync3.0 指南
  • IBM RAG 挑战赛 挑战赛 冠军 RAG_Challenge 系统性理解
  • 微调大语言模型(生成任务),怎么评估它到底“变好”了?
  • dp进阶,树形背包(dfs+01)
  • 自动对焦技术助力TGV检测 半导体检测精度大突破
  • 本地部署 WordPress 博客完整指南(基于 XAMPP)
  • Bootstrap 5学习教程,从入门到精通,Bootstrap 5 侧边栏导航(Offcanvas) 语法知识点及案例(26)
  • oracle基础审计管理
  • Django实战:自定义中间件实现全链路操作日志记录
  • IPv6配置
  • MySQL主从备份
  • 16.2 Docker多阶段构建实战:LanguageMentor镜像瘦身40%,支持500+并发1.2秒响应!
  • 2025年智能营销产品发展和应用趋势
  • uniapp消息推送
  • 向量关于基的坐标向量
  • 图像分割模型中的空间信息、上下文信息、空间路径、上下文路径到底是什么?有什么作用?