Kubernetes 网络全景:从身份、入口、策略到排障
1. Pod 网络模型
- 最小网络单元是 Pod
- 同 Pod 容器共享 IP、端口空间、localhost
- 每个 Pod 拿到集群内唯一 IP
- 普通应用不应该依赖 Pod IP 的长期稳定性
2. Pod 级端口
containerPort:声明容器端口,不是防火墙。
hostPort:把容器端口绑定到所在节点端口,适合 DaemonSet / node agent。
hostNetwork:Pod 直接使用宿主网络,隔离最弱。
3. CNI 数据面
CNI 负责 IPAM、veth/路由/Overlay/ENI/eBPF、NetworkPolicy 执行。
先确认:Pod CIDR、Service CIDR、MTU、是否支持策略、是否替代 kube-proxy。
4. Service 抽象
Service = 稳定入口 + 动态后端。
核心链路:
DNS -> ClusterIP / Service VIP -> kube-proxy 或 eBPF -> EndpointSlice -> PodIP:targetPort
5. 入口类型
- ClusterIP:集群内部
- NodePort:每节点固定端口
- LoadBalancer:云 / 裸金属 LB
- Ingress:HTTP/HTTPS host/path
- Gateway API:新一代多协议路由
6. 策略与安全
NetworkPolicy 是 allow-list API。
默认通常全通;Pod 被策略选中后,对应方向进入隔离。
是否生效取决于 CNI。
7. 排障入口
按层定位:
Pod -> CNI -> DNS -> Service / EndpointSlice -> kube-proxy/eBPF -> LB / Ingress / Gateway -> NetworkPolicy / Mesh
hostPort 记忆钩子
hostPort 是“这个节点上这个端口”的语义。
Service 是“这组 Pod 作为一个服务”的语义。
业务入口默认先考虑 Service / Ingress / Gateway。