Kubernetes NodePort + InternalTrafficPolicy=Local 完整指南

📅 2026/8/14 13:58:50
Kubernetes NodePort + InternalTrafficPolicy=Local 完整指南
文章目录Kubernetes NodePort + InternalTrafficPolicy=Local 完整指南第一篇:入门篇——TrafficPolicy 基础概念1.1 为什么需要 TrafficPolicy?问题场景 1:源 IP 丢失问题场景 2:跨节点转发增加延迟TrafficPolicy 的解决思路1.2 两个 TrafficPolicy 的定义externalTrafficPolicy(外部流量策略)internalTrafficPolicy(内部流量策略)1.3 Cluster 模式 vs Local 模式 对比externalTrafficPolicy 对比internalTrafficPolicy 对比1.4 Local 模式的工作原理externalTrafficPolicy: Local 的流量路径为什么 Local 模式能保留源 IP?healthCheckNodePort(健康检查端口)1.5 入门级实操:创建 Local 模式 Service步骤 1:创建 Deployment + NodePort Service步骤 2:查看 Service步骤 3:查看 Pod 分布步骤 4:验证各节点访问情况步骤 5:验证源 IP 保留第二篇:进阶篇——Local 模式深挖与多场景实战2.1 externalTrafficPolicy: Local 的 iptables 规则查看 Local 模式的 iptables 规则Local 模式的规则特点验证:不同节点上的 iptables 规则不同2.2 healthCheckNodePort 深度解析什么是 healthCheckNodePort?查看健康检查端口健康检查端口的工作原理云 LoadBalancer 的配合手动指定 healthCheckNodePort2.3 internalTrafficPolicy: Local 的行为内部流量 Local 模式的特点与 externalTrafficPolicy: Local 的关键区别实验:验证 internalTrafficPolicy: Local2.4 Local 模式的负载均衡问题问题:负载不均解决方案方案 1:DaemonSet(每个节点都有 Pod)方案 2:Pod 反亲和性 + 合理副本数方案 3:用 Cluster 模式(接受源 IP 丢失)方案 4:用 Ingress + proxy protocol2.5 多场景实战场景 A:需要获取客户端真实 IP(日志/统计)场景 B:低延迟内部服务(internalTrafficPolicy: Local)场景 C:配合 MetalLB(LoadBalancer + Local)场景 D:对比实验:Cluster vs Local2.6 进阶验证实验实验 A:验证 healthCheckNodePort实验 B:验证 Local 模式下 Pod 分布变化的影响实验 C:验证 internalTrafficPolicy fallback实验 D:验证 iptables 规则按节点不同第三篇:高级篇——生产实践、故障排查与深度原理3.1 Local 模式与源 IP 传递的完整方案方案对比推荐架构:Ingress + Local 模式3.2 Local 模式与其他 Service 特性的配合3.2.1 与 sessionAffinity 配合3.2.2 与多端口配合3.2.3 与 LoadBalancer 配合3.2.4 与 NetworkPolicy 配合3.3 生产环境最佳实践3.3.1 什么时候用 Local 模式?3.3.2 避免丢包的最佳实践3.3.3 源 IP 获取的最佳实践3.3.4 监控3.3.5 安全考虑3.4 故障排查手册问题 1:Local 模式下某些节点访问超时问题 2:Local 模式下应用看不到真实源 IP问题 3:healthCheckNodePort 全部返回 503问题 4:Local 模式下负载严重不均问题 5:internalTrafficPolicy: Local 不生效问题 6:切换 TrafficPolicy 后不生效3.5 TrafficPolicy 的限制与注意事项限制清单注意事项3.6 10 个 Service 例子大总结Service 知识体系全景第四篇:知识体系总结4.1 TrafficPolicy 知识图谱4.2 必须记住的 10 个结论10 个例子全部完成!下一步建议Kubernetes NodePort + InternalTrafficPolicy=Local 完整指南入门 → 进阶 → 高级三层递进,理论与实操结合,基于你的环境(v1.24.17 + Calico + 3 节点集群 + 轩辕镜像源)。详细与精细化。这是 10 个例子的最后一个。第一篇:入门篇——TrafficPolicy 基础概念1.1 为什么需要 TrafficPolicy?问题场景 1:源 IP 丢失默认情况下,NodePort Service 的externalTrafficPolicy: Cluster,数据包会被 SNAT(源地址改写):客户端 203.0.113.10 → node01:30099 → SNAT 改写源 IP 为 node01 IP → Pod(在 node02 上) Pod 看到的源 IP 是 192.168.136.149(node01),不是真实客户端 203.0.113.10