1. Kubernetes Service 核心概念解析
在Kubernetes集群中,Pod是最小的调度单元,但它们天生具有不稳定性。每次Pod重建或滚动更新时,都会获得全新的IP地址。这种动态特性使得直接通过Pod IP访问服务变得不可行。Service资源正是为解决这一问题而设计的核心抽象层。
Service通过标签选择器(Label Selector)与一组Pod建立关联,为它们提供稳定的虚拟IP(ClusterIP)和DNS名称。无论后端Pod如何变化,客户端始终可以通过这个固定入口访问服务。这种机制不仅解决了Pod不稳定的问题,还内置了负载均衡能力——流量会自动分配到所有健康的Pod实例上。
重要提示:Service的虚拟IP只在集群内部有效,不同类型的Service提供了不同级别的外部访问能力。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Service 的四种类型详解
2.1 ClusterIP:基础服务类型
这是默认的Service类型,特点包括:
- 分配一个集群内部的虚拟IP(ClusterIP)
- 仅限集群内其他Pod或组件访问
- 自动注册到集群DNS系统(如CoreDNS)
- 典型使用场景:微服务间的内部通信
配置示例:
yaml复制apiVersion: v1
kind: Service
metadata:
name: internal-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
2.2 NodePort:节点端口暴露
NodePort在ClusterIP基础上增加了节点级别的访问:
- 在每个Worker节点上开放一个静态端口(默认范围30000-32767)
- 外部客户端可以通过
<节点IP>:<NodePort>访问服务 - 流量会经过节点端口转发到Service,再负载均衡到Pod
典型配置:
yaml复制apiVersion: v1
kind: Service
metadata:
name: nodeport-service
spec:
type: NodePort
selector:
app: m
