<p>I've encountered rather strange behavior of my kubernetes cluster (1.18.20, calico 3.14.2): when I attempt to upload two-megabyte JSON file to pod via curl through <code>NodePort</code> service, transmission is interrupted with <code>Recv failure: Connection reset by peer</code>.
Traffic capture shows that both client and server receive RST packets from network, but didn't sent them.
Binary file of same size uploads successfully, but JSON is rejected regardless of <code>Content-Type</code> specified.
File transfer between pods (using similar commands and same file) proceeds smoothly.
Upload through ingress (also configured using <code>NodePort</code>) fails too.
Size of received fragment is always the same, approximately 850K.</p>
<p>I've used <code>nc -l 80*</code> instead of real service with the same outcome.</p>
<p>Apparently, <code>kube-proxy</code> doesn't like big JSON files.</p>
<p>Is it possible to send big JSON files to pod from external clients, or such a limit is hardcoded?</p>
<p><strong>UPD1</strong></p>
<p>Same behavior for fresh cluster (1.22.0, calico 3.20.0).</p>
<p><strong>UPD2</strong></p>
<p>System rejects not every big JSON payload, but only several percent of user uploads.
Payload is specially crafted by client application: first part of multy-volume Zip archive is base64-encoded and encapsulated as JSON file ('{ &quot;data&quot;: &quot;...&quot; }').
Size of fragment causing connection break is about 640K.</p>
<p>Looks like error in filtering procedure inside of <code>kube-proxy</code>.</p>

<p>Unfortunately, the source of the problem was in misconfiguration of IDS/IPS.</p>
<p>Nothing to do with <strong>kube-proxy</strong>.</p>
