【发布时间】:2021-11-09 20:29:27
【问题描述】:
我的 kubernetes 集群(1.18.20,calico 3.14.2)遇到了相当奇怪的行为:当我尝试通过 NodePort 服务通过 curl 将 2 兆字节的 JSON 文件上传到 pod 时,传输被 @ 中断987654322@。
流量捕获显示客户端和服务器都收到来自网络的 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 内部的过滤过程看起来像错误。
【问题讨论】:
标签: kubernetes kubernetes-networking