kube-proxy是否会过滤HTTP POST的JSON类型载荷?大JSON上传连接重置问题咨询
Kubernetes 没有任何针对 JSON 载荷大小或内容的硬编码限制,你遇到的连接重置问题与 kube-proxy 无关。
根因分析
kube-proxy 仅负责四层网络转发,无论是 iptables 还是 ipvs 模式,都不会解析七层应用层的报文内容,也不存在识别、拦截 JSON 格式载荷的逻辑。你在多个 Kubernetes、Calico 版本上都能复现问题,也侧面说明问题和集群核心组件本身无关。
你遇到的由网络侧发送的 RST 包,来自转发路径上的安全检测设备/规则。你提到被拦截的载荷是 base64 编码的多卷 Zip 归档首段,Zip 文件的固定头部特征(504B0304)经过 base64 编码后仍存在可被匹配的特征码,大部分 IPS/IDS、主机安全防护、防病毒系统的规则库都会将这类特征标记为可疑的恶意文件上传行为,直接主动发送 RST 包中断连接。
验证方法
- 直接在集群节点本地 curl 对应 NodePort 端口上传问题文件,如果本地可以上传成功,即可确认是集群外部网络的安全设备触发了拦截。
- 如果本地上传也失败,检查节点上的自定义 iptables 规则、主机安全 Agent 配置,确认是否存在额外的流量检测规则。
- 将触发拦截的 JSON 中的 base64 内容随机修改几个无关字符后重新上传,如果可以上传成功,即可确认是特征匹配导致的安全拦截。
异常现象的对应解释
- Pod 之间传输正常:Pod 子网内的互访流量不会经过集群外的安全设备,多数主机安全规则也默认放行 Pod 内部流量,因此不会触发拦截。
- 普通二进制文件上传正常:普通二进制文件没有匹配到安全规则的拦截特征,因此可以正常传输。
- 触发拦截的大小不固定:安全设备的检测规则基于分片重组后的内容匹配,只要载荷中出现对应特征就会触发拦截,和整体文件大小没有绝对关系。
内容的提问来源于stack exchange,提问作者Anemon
相关产品推荐
相关产品推荐

