我的 kubernetes 集群(1.18.20,calico 3.14.2)遇到了相当奇怪的行为:当我尝试通过 curlNodePort
服务将 2 兆字节的 JSON 文件上传到 pod 时,传输被Recv failure: Connection reset by peer
. 流量捕获显示客户端和服务器都收到来自网络的 RST 数据包,但没有发送它们。相同大小的二进制文件上传成功,但无论Content-Type
指定如何,JSON 都会被拒绝。pod 之间的文件传输(使用类似的命令和相同的文件)顺利进行。通过入口上传(也使用 配置NodePort
)也失败了。接收到的片段大小始终相同,约为 850K。
我已经使用nc -l 80*
而不是具有相同结果的实际服务。
显然,kube-proxy
不喜欢大的 JSON 文件。
是否可以从外部客户端向 pod 发送大的 JSON 文件,或者这样的限制是硬编码的?
UPD1
新集群(1.22.0,calico 3.20.0)的行为相同。
UPD2
系统不会拒绝所有大的 JSON 有效负载,但只会拒绝百分之几的用户上传。Payload 由客户端应用程序特制:多卷 Zip 存档的第一部分采用 base64 编码并封装为 JSON 文件 ('{ "data": "..." }')。导致连接中断的片段大小约为 640K。
中的过滤过程看起来像错误kube-proxy
。