公司动态
Kubernetes ClientIP 会话亲和性 Service 完整指南
文章目录Kubernetes ClientIP 会话亲和性 Service 完整指南第一篇:入门篇——会话亲和性基础概念1.1 为什么需要会话亲和性?问题场景会话亲和性的解决思路1.2 会话亲和性的定义一句话理解关键配置两种 sessionAffinity 模式1.3 会话亲和性 vs 普通负载均衡 对比1.4 ClientIP 亲和性的工作原理(iptables 模式)iptables 模式下的实现iptables 规则示例亲和性表存在哪里?1.5 入门级实操:创建 ClientIP 亲和性 Service步骤 1:创建 Deployment + Service步骤 2:查看 Pod 分布步骤 3:查看 Service步骤 4:验证同一客户端始终落到同一个 Pod步骤 5:验证不同客户端可能落到不同 Pod第二篇:进阶篇——亲和性机制深挖与多场景实战2.1 timeoutSeconds 超时机制超时是什么?默认值和取值范围查看当前超时修改超时实验:验证超时后亲和性失效2.2 iptables recent 模块深度解析查看亲和性 iptables 规则规则解读查看亲和性表内容2.3 Pod 增减对亲和性的影响增加 Pod删除 Pod缩容2.4 ClientIP 亲和性与 NAT 的问题核心问题:大量客户端在同一个 NAT 后面你的环境中的情况解决方案2.5 多场景实战场景 A:用户登录态保持场景 B:文件上传(需要同一 Pod 处理分片)场景 C:WebSocket 长连接场景 D:对比实验:亲和性 vs 非亲和性2.6 进阶验证实验实验 A:验证 iptables recent 表实验 B:验证不同节点的亲和性表独立实验 C:验证 Pod 删除后亲和性打破实验 D:验证超时机制第三篇:高级篇——生产实践、故障排查与深度原理3.1 IPVS 模式下的 ClientIP 亲和性IPVS 模式的实现IPVS SH vs iptables recentIPVS 模式下的配置3.2 ClientIP 亲和性 vs Ingress Cookie 亲和性K8s Service 层面的限制Ingress 的 cookie 亲和性两种亲和性对比生产环境建议3.3 生产环境最佳实践3.3.1 什么时候用 ClientIP 亲和性?3.3.2 timeoutSeconds 设置建议3.3.3 发布策略注意事项3.3.4 监控3.3.5 安全考虑3.4 故障排查手册问题 1:亲和性不生效,同一客户端落到不同 Pod问题 2:负载严重不均,一个 Pod 承受大部分流量问题 3:Pod 重启后用户被踢下线问题 4:超时时间设置后不生效问题 5:NodePort + ClientIP 亲和性的源 IP 问题3.5 ClientIP 亲和性的限制与注意事项限制清单注意事项3.6 亲和性方案选型决策树第四篇:知识体系总结4.1 ClientIP 亲和性知识图谱4.2 必须记住的 10 个结论下一步Kubernetes ClientIP 会话亲和性 Service 完整指南入门 → 进阶 → 高级三层递进,理论与实操结合,基于你的环境(v1.24.17 + Calico + iptables 模式 kube-proxy + 轩辕镜像源)。详细与精细化。第一篇:入门篇——会话亲和性基础概念1.1 为什么需要会话亲和性?问题场景前面学的 Service 默认是随机负载均衡(iptables 模式),同一个客户端的多次请求可能落到不同的 Pod:客户端 192.168.1.100 第1次请求 → Pod-A 客户端 192.168.1.100 第2次请求 → Pod-C 客户端 192.168.1.100 第3次请求 → Pod-B痛点:如果应用把用户登录信息(session)存在本地内存里,用户第 1 次请求在 Pod-A 登录,第 2 次请求落到 Pod-C,Pod-C 没有这个用户的 session,用户就被踢下线了。会话亲和性的解决思路让同一个客户端 IP 的请求始终落到同一个 Pod,保持会话一致性: