03 Service 网络转发
Service 网络转发
Service 把稳定的访问地址映射到变化的 EndpointSlice;节点数据面执行转发,控制面只负责下发规则所需的对象。
版本:Kubernetes v1.37.2;核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
specification {
element actor { style { shape person; color amber } }
element system { style { color muted } }
element component { style { color primary } }
element storage { style { shape storage; color green } }
}
model {
api = component 'API server'
proxy = component 'kube-proxy'
rules = component '节点内核转发规则'
c = actor '客户端 Pod'
dns = component '集群 DNS'
p = component '后端 Ready Pod'
}
views {
dynamic view index {
title '核心链路'
variant sequence
proxy -> api 'watch Service 与 EndpointSlice'
proxy -> rules '同步 nftables 等转发规则'
c -> dns '查询 Service 名称'
dns -> c '返回 ClusterIP'
c -> rules '发送到 ClusterIP:port'
rules -> p '选择可用端点并转换目的地址'
p -> rules '响应,经连接跟踪处理'
rules -> c '返回业务响应'
}
}
关键判断
- 示例采用 Linux kube-proxy 的内核规则数据面;kube-proxy 不需要在用户态逐包转发。
- EndpointSlice 保存后端地址与就绪等条件,端点随 Pod 生命周期变化;publishNotReadyAddresses 等配置会改变可见性。
- 集群也可由 eBPF 等实现替代 kube-proxy,跨节点连通性还依赖集群网络插件,不能把图当作所有集群唯一实现。
边界
本页限于 ClusterIP 的常见 TCP 访问,不展开 NodePort、LoadBalancer、会话亲和及各流量策略;API server 不在业务数据包路径中。