news 2026/6/10 19:03:10

K8S NodePort 与 ClusterIP Service 类型的包含关系详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8S NodePort 与 ClusterIP Service 类型的包含关系详解

在K8S service类型中,NodePort 服务包含了 ClusterIP 服务的所有能力

这是一个重要的核心概念:NodePort 服务是在 ClusterIP 服务基础上的扩展,而不是一个独立的替代品。

详细解释:

1.架构层次

NodePort Service = ClusterIP Service + NodePort 端口映射

2.实际访问方式

一个 NodePort 类型的 Service 实际上同时支持三种访问方式

方式一:通过 ClusterIP(内部访问)
apiVersion:v1kind:Servicemetadata:name:my-servicespec:type:NodePort# 注意这里指定的是 NodePortselector:app:my-appports:-port:80# ClusterIP 端口targetPort:8080# Pod 端口nodePort:30007# NodePort 端口(可选,系统自动分配)

集群内部访问

# 通过 ClusterIP 直接访问curlhttp://<cluster-ip>:80# 通过 DNS 域名访问(完全支持!)✅curlhttp://my-service.default.svc.cluster.local:80curlhttp://my-service:80# 同一命名空间内可省略后缀
方式二:通过 NodePort(外部访问)
# 通过任何节点的 IP + NodePort 访问curlhttp://<node-ip>:30007
方式三:通过 LoadBalancer(如果有云提供商)

如果你在云环境,还可以配置 LoadBalancer,它又是在 NodePort 基础上的扩展。

3.DNS 解析验证

# 查看服务详情kubectl get svc my-service# NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)# my-service NodePort 10.96.123.456 <none> 80:30007/TCP# 查看 DNS 解析kubectl run -it --rmtest--image=busybox --restart=Never --nslookupmy-service# Server: 10.96.0.10# Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local## Name: my-service# Address 1: 10.96.123.456 my-service.default.svc.cluster.local

4.实际示例

apiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deployspec:replicas:2selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-name:nginximage:nginx:alpineports:-containerPort:80---apiVersion:v1kind:Servicemetadata:name:nginx-servicespec:type:NodePort# NodePort 类型selector:app:nginxports:-port:80# 集群内访问端口targetPort:80# Pod 端口nodePort:30080# 节点端口

测试访问

# 1. 在集群内部通过 DNS 访问(ClusterIP 能力)kubectlexec-it<pod-name>--curlhttp://nginx-service# 2. 从外部通过 NodePort 访问curlhttp://<任意节点IP>:30080

5.流量流向示意

外部用户 ↓ Node IP:NodePort (如 192.168.1.100:30007) ↓ Service ClusterIP (如 10.96.123.456:80) ↓ Pod IP:Port (如 10.244.1.2:8080)

总结要点:

  1. NodePort 服务一定包含 ClusterIP,每个 NodePort 服务都会自动分配一个 ClusterIP
  2. K8S DNS 完全支持,可以通过服务名在集群内解析到 ClusterIP
  3. 集群内部访问优先使用 ClusterIP/DNS,不经过节点端口,效率更高
  4. NodePort 不是 ClusterIP 的替代,而是它的超集
  5. 💡最佳实践:集群内部组件间通信使用服务名(DNS),外部访问才用 NodePort

所以,可以完全放心地在集群内部通过service-name.namespace.svc.cluster.local来访问 NodePort 服务!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:36:54

收藏级干货!小白程序员必看:AI大模型底层逻辑全拆解

在数字化浪潮席卷全球的当下&#xff0c;AI大模型早已渗透到工作生活的方方面面——从日常对话的ChatGPT、辅助编码的智能工具&#xff0c;到高效处理文档的智能助手&#xff0c;它正悄然重塑我们的工作节奏与生活方式。但对多数小白和刚入门的程序员而言&#xff0c;大模型更像…

作者头像 李华
网站建设 2026/6/10 14:47:57

后端转大模型应用开发:核心技能+落地路线(建议收藏)

后端开发者转型大模型应用开发&#xff0c;真正的核心竞争力从不是“能跑通Demo”的表层能力&#xff0c;而是我们沉淀多年的工程化功底——懂高并发架构、熟分布式部署、能保障系统稳定安全与可维护性&#xff0c;这才是企业真正渴求的稀缺特质。大模型应用开发的核心技能框架…

作者头像 李华
网站建设 2026/6/10 10:55:45

Java static

一、static 是什么&#xff1f;static&#xff08;静态&#xff09;是 Java 中的一个关键字&#xff0c;用来修饰变量、方法、代码块、内部类&#xff0c;核心作用是&#xff1a;被 static 修饰的成员属于「类」本身&#xff0c;而不是类的某个实例&#xff08;对象&#xff09…

作者头像 李华
网站建设 2026/6/10 11:01:30

收藏!Java程序员转大模型指南:从入门到实战,抢占AI时代职业风口

当大模型技术从实验室概念迈向规模化产业应用&#xff0c;每一位Java程序员都站在了职业升级的黄金十字路口。深耕Java生态多年的你&#xff0c;无需焦虑过往技术积累被颠覆——那些在企业级开发中沉淀的工程化思维、分布式系统架构能力&#xff0c;恰恰是当前大模型落地最稀缺…

作者头像 李华
网站建设 2026/6/10 10:54:31

【Django毕设源码分享】基于Django的大学生心理健康管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/10 10:56:24

解锁免费开源刺绣设计工具:从零开始的刺绣创作之旅

解锁免费开源刺绣设计工具&#xff1a;从零开始的刺绣创作之旅 【免费下载链接】inkstitch Ink/Stitch: an Inkscape extension for machine embroidery design 项目地址: https://gitcode.com/gh_mirrors/in/inkstitch 你是否曾想过自己设计独特的刺绣图案&#xff0c;…

作者头像 李华