集群场景 | 是否有回环风险 | 需要处理吗 |
超级节点 + 内网 CLB + CLB Service | 无风险 | 无需处理 |
超级节点 + 内网 CLB + CLB Ingress | 无风险 | 无需处理 |
iptables 模式 + 内网 CLB + CLB Service | 无风险 | 无需处理 |
使用 Service 名称或 ClusterIP 访问 Service | 无风险 | 无需处理 |
公网 CLB + CLB Service / CLB Ingress | 无风险 | 无需处理 |
普通节点/原生节点 + IPVS 模式 + 内网 CLB + CLB Service + 访问 LoadBalancer IP | 有风险 | 需要处理 |
普通节点/原生节点 + 内网 CLB + CLB Ingress + 访问 LoadBalancer IP | 有风险 | 需要处理 |
my-svc.default.svc.cluster.local)或 ClusterIP 时,流量在集群内直接转发到目标 Pod,不经过 CLB,因此不存在回环问题。CLB 类型 | 节点类型 | 默认是否拦截 CLB VIP | 回环风险 | 说明 |
内网 CLB | 普通节点 | 不拦截(流量走 CLB) | 有风险 | 默认不在集群内拦截 CLB VIP,流量经过 CLB 转发,同节点时可能回环。 |
内网 CLB | 原生节点 | 不拦截(流量走 CLB) | 有风险 | 行为与普通节点一致。 |
内网 CLB | 超级节点 | 拦截(流量集群内闭环) | 无风险 | 默认在集群内拦截 CLB VIP,流量直接转发到目标 Pod,不经过 CLB。 |
公网 CLB | - | - | 无风险 | - |
场景 | 流量路径 | 回环风险 | 解决方案 |
普通节点/原生节点 + 内网 CLB + IPVS | 经过 CLB | 有回环风险 | |
普通节点/原生节点 + 内网 CLB + IPVS + 已启用集群内转发 | 集群内闭环,不经过 CLB | 无 | 已解决 |
普通节点/原生节点 + 内网 CLB + IPVS + CLB 已开启 SNAT | 经过 CLB | 无 | 已解决 |
超级节点 | 集群内闭环,不经过 CLB | 无 | 无需处理 |
iptables 模式 | 集群内闭环,不经过 CLB | 无 | 无需处理 |
场景 | 流量路径 | 回环风险 | 解决方案 |
内网 CLB + CLB 未开启 SNAT | 经过 CLB | 有回环风险 | |
内网 CLB + CLB 已开启 SNAT | 经过 CLB | 无 | 已解决 |
apiVersion: v1kind: Servicemetadata:name: my-serviceannotations:# 启用集群内转发,避免流量走 CLBservice.cloud.tencent.com/prevent-loopback: "true"spec:type: LoadBalancerselector:app: my-appports:- port: 80targetPort: 8080
spec.loadBalancer.l4Listeners.snatEnable: true ,开启 CLB 4 层监听器的 SNAT 功能。维度 | 集群内转发(拦截 CLB VIP) | CLB 开启 SNAT |
原理 | 在节点上拦截 CLB VIP,流量集群内闭环 | CLB 替换源 IP,使回包必须经过 CLB |
流量是否经过 CLB | 不经过 | 经过 |
回环风险 | 无 | 无 |
CLB 高级能力 | 不可用(流量不经过 CLB) | 可用 |
获取真实源 IP | 可以获取 | TCP 可通过 Proxy Protocol 获取,UDP 无法获取 |
spec.loadBalancer.l7Listeners.snatEnable: true ,开启 CLB 7 层监听器的 SNAT 功能。 spec.loadBalancer.l7Listeners.keepaliveEnable: 1 ,开启 CLB 7 层监听器的 SNAT 功能。X-Forwarded-For HTTP Header 获取真实源 IP。service.cloud.tencent.com/prevent-loopback: "true" annotation 后对现有业务有影响吗?文档反馈