@@ -42,6 +42,29 @@ runtime has been upgraded, the runtime must support the `v1` CRI API for the
4242connection to succeed. This might require a restart of the kubelet after the
4343container runtime is correctly configured.
4444
45+ ## List streaming {#list-streaming}
46+
47+ {{< feature-state feature_gate_name="CRIListStreaming" >}}
48+
49+ The standard CRI list RPCs (` ListContainers ` , ` ListPodSandbox ` , ` ListImages ` ) return
50+ all results in a single unary response. On nodes with a large number of containers
51+ (for example, more than roughly 10,000 including both running and stopped), these
52+ responses can exceed gRPC's default 16 MiB message size limit, causing the kubelet
53+ to fail when reconciling state with the container runtime.
54+
55+ With the ` CRIListStreaming ` feature gate enabled, the kubelet uses server-side
56+ streaming RPCs (such as ` StreamContainers ` , ` StreamPodSandboxes ` ,
57+ ` StreamImages ` ) that allow the container runtime to divide results across
58+ multiple response messages, bypassing the per-message size limit. This is
59+ particularly useful for:
60+
61+ - High container churn environments (CI/CD systems)
62+ - Large-scale batch processing workloads
63+
64+ If the container runtime does not support streaming RPCs, the kubelet
65+ automatically falls back to the standard unary RPCs for backward
66+ compatibility.
67+
4568## {{% heading "whatsnext" %}}
4669
4770- Learn more about the CRI [ protocol definition] ( https://github.com/kubernetes/cri-api/blob/v0.33.1/pkg/apis/runtime/v1/api.proto )
0 commit comments