当前位置: 首页 > 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.lqws.cn/news/547435.html

相关文章:

  • 使用Puppeteer提取页面内容的技巧
  • 小米路由器 AX3000T 解锁 SSH
  • TCP四层模型:网络协议核心解密
  • 鸿蒙HarmonyOS 关于图片、视频的选择详解
  • Veo 3 视频生成大模型完整操作教程(2025)
  • 《Effective Python》第十章 健壮性——始终将资源传递给生成器,并在外部由调用者清理它们
  • 【RAG面试题】如何获取准确的语义表示
  • ​​Git提交代码Commit消息企业级规范
  • algorithm ——————》双指针(移动0 复写0 快乐数 装水问题 以及数组中找几个数和为指定的元组)
  • 链表两数相加深度解析【进位】【边界条件】【迭代】【递归】
  • Spring Boot 应用开发实战指南:从入门到实战(内含实用技巧+项目案例)
  • 人工智能-基础篇-2-什么是机器学习?(ML,监督学习,半监督学习,零监督学习,强化学习,深度学习,机器学习步骤等)
  • Windows的xshell连接VW里的centos系统里的mysql失败解决方法
  • PostgreSQL 主从集群搭建
  • 杭州市长姚高员带队调研景联文科技,听取高质量数据集建设情况
  • [特殊字符] Python 批量合并 Word 表格中重复单元格教程(收货记录案例实战)
  • 从零开始的二三维CAD|CAE轻量级软件开发:学习以及研发,Gmsh的脚本编辑器设计!
  • python 脚本 遍历目录,并把目录下的非utf-8文件改成utf8
  • 16.2 Docker多阶段构建实战:LanguageMentor镜像瘦身40%,支持500+并发1.2秒响应!
  • 02【C++ 入门基础】标准输入输出初识/缺省参数
  • Qt 与 Halcon 联合开发六:基于海康SDK设计完整的相机类【附源码】
  • 【Elasticsearch】Linux环境下安装Elasticsearch
  • git rebase -i 详解
  • 微服务中解决高并发问题的不同方法!
  • 未来蓝图:引领能源数字化新浪潮
  • html制作一个简单的表单
  • 每天一个前端小知识 Day 14 - 前端状态管理深入实践
  • [1-01-01].第27节:常用类 - 包装类
  • 26考研|数学分析:隐函数定理及其应用
  • 官方App Store,直链下载macOS ,无需Apple ID,macOS10.10以上.