【Kubernetes】(八)Service 1
目录
二、Service 工作原理:kube-proxy 与流量代理模式
一、Service 发现的核心价值
Pod 是 Kubernetes 中的非永久性资源,IP 地址会随着重建、调度、扩缩容不断发生变化,无法为前端提供稳定的访问地址。为了解决 “前端如何持续跟踪后端 Pod 地址” 这一问题,Kubernetes 专门设计了 Service 资源。Service 作为一组 Pod 的统一固定入口,通过稳定的虚拟 IP 屏蔽后端 Pod 的动态变化,自动实现服务发现、负载均衡和流量转发,让服务可以被稳定、可靠地访问。
二、Service 工作原理:kube-proxy 与流量代理模式
Service 的流量转发能力由节点上的 kube-proxy 组件负责实现。kube-proxy 会监听 Service 和 Endpoints 变化,并在节点上配置对应的流量规则,目前最常用的是 iptables 模式和 IPVS 模式。
1. iptables 代理模式
工作机制:kube-proxy 持续监控集群中 Service 和 Endpoints 的添加与删除,为每个 Service 配置 iptables 规则。
流量路径:当请求到达 Service 的 ClusterIP 和端口时,iptables 会捕获流量,并随机重定向到后端某一个健康 Pod。
特点:基于 Linux netfilter 实现,流量直接在内核态处理,不需要在用户空间与内核空间之间切换,系统开销低,是 Kubernetes 默认代理模式。
2. IPVS 代理模式
工作机制:kube-proxy 同样监听 Service 与端点变化,通过 netlink 接口创建并同步 IPVS 规则,保证 IPVS 状态与期望状态一致。
底层结构:IPVS 基于哈希表数据结构,并且运行在内核空间。
性能优势:相比 iptables,IPVS 重定向延迟更短、规则同步更快、吞吐量更高,在大规模、高并发集群中优势明显。
三、Service 核心类型详解(基础篇)
1. ClusterIP 类型(默认类型)
功能:通过集群内部 IP 暴露服务,仅允许在集群内部访问,外部无法直接访问。
适用场景:集群内部服务间通信,如前端调用后端 API、微服务互相访问。
示例:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: ClusterIP
selector:
app: nginx
ports:
- protocol: TCP
port: 8000
targetPort: 80
访问方式:集群内部通过 http://<ClusterIP>:8000 访问。
2. NodePort 类型
功能:在每个节点的 IP 上开放一个静态端口(默认范围 30000–32767),使服务能够从集群外部访问。
流量路径:外部请求 → 节点IP:NodePort → NodePort Service → 后端 Pod。
示例:
apiVersion: v1
kind: Service
metadata:
name: nodeservice
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 8000
targetPort: 80
nodePort: 31788
访问方式:外部通过 http://<节点IP>:31788 直接访问。
四、高频问答
Q: Kubernetes 如何在集群的 Pod 之间提供网络服务?
A:Kubernetes 通过一个扁平化的网络模型和 CNI 来为 Pod 提供网络服务,每个 Pod 都有一个唯一的、可在整个集群内直接访问的 IP 地址。
核心网络模型:K8s 规定所有 Pod 都处于统一、扁平的网络空间,无需 NAT,任何 Pod 可直接通过 IP 访问另一 Pod,无论是否在同一节点。
实现方式:基于 CNI(容器网络接口),由第三方插件如 Calico、Flannel 实现。
同节点通信:CNI 创建虚拟网桥(如 cbr0),将同一节点的 Pod 连接到网桥。
跨节点通信:使用覆盖网络(如 Flannel)或路由方案(如 Calico)实现互通。
Q:解释 iptables 和 IPVS 代理模式 Service 的区别。
A:iptables 代理模式:kube-proxy 监控 Service 和 Endpoints,配置 iptables 规则,捕获到达 ClusterIP 的请求并重定向到后端 Pod。默认随机选择后端,流量由 Linux netfilter 处理,无需在用户空间和内核空间切换,开销较低。
IPVS 代理模式:kube-proxy 监听服务与端点,调用 netlink 创建 IPVS 规则并同步。IPVS 基于哈希表结构并在内核空间运行,重定向延迟更短、同步规则性能更好、吞吐量更高,适合大规模高并发集群。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)