容器 29:Pod IP 与 Service 后端如何关联
三份状态不能互换
Pod 的 IP 是运行时网络路径产生的地址;Service 的名称在集群 DNS 中解析为入口地址或别名,转发机制由节点/插件实现;EndpointSlice 等对象描述可用后端及条件,后端的就绪状态来自 Pod/探针。DNS 返回地址并不是 socket 连通的凭据,网络策略是否真的拦截流量还依赖已启用且支持策略的 CNI 插件;有 NetworkPolicy 对象不等于执行层已经配置过滤。
正例:在固定插件的专用 kind VM 给两个 probe-app Pod 设置不同 /identity 输出,访问 Service 多次,记录 Pod UID、EndpointSlice、节点转发规则/程序状态及每次后端 PID;负例:在仅属于自建 namespace 的测试策略里拒绝一条已允许的来源/目标矩阵,再复核真实 HTTP 结果与插件实现。若插件不支持 NetworkPolicy,不可把“策略不生效”描述成 Kubernetes 规范保证放行。入口与统一源码包说明实验资源边界;当前无 kind/CNI,全部 NOT_RUN。
| 现象 | 核查 | 适用条件 |
|---|---|---|
| DNS 有解析,访问超时 | Service 后端/转发与策略 | 解析不是连通 |
| Pod 可直连,Service 不通 | EndpointSlice 与 Service 实现 | 不是 veth 必然故障 |
| Policy 对象存在但未过滤 | 插件版本与实测矩阵 | 不代表策略已执行 |
练习
- 先预测让一只 Pod 的 readiness 返回 503 时 Service 后端集合和直接 Pod IP 请求各怎样变化,观察端点及真实请求差别。
- 在确实支持策略的专用插件中,先列出允许/拒绝矩阵再配置 NetworkPolicy,逐条请求并检查策略恢复与清理。
系列总目录:从进程隔离到运行时与编排。
参考资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.


