Skip to content

Commit c609d9f

Browse files
committed
Add documentation for CRIListStreaming feature gate
Signed-off-by: Ayato Tokubi <atokubi@redhat.com>
1 parent c57ffe3 commit c609d9f

2 files changed

Lines changed: 42 additions & 0 deletions

File tree

content/en/docs/concepts/containers/cri.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,29 @@ runtime has been upgraded, the runtime must support the `v1` CRI API for the
4242
connection to succeed. This might require a restart of the kubelet after the
4343
container 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)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
title: CRIListStreaming
3+
content_type: feature_gate
4+
_build:
5+
list: never
6+
render: false
7+
8+
stages:
9+
- stage: alpha
10+
defaultValue: false
11+
fromVersion: "1.36"
12+
---
13+
Enable streaming RPCs for CRI list operations (`ListContainers`,
14+
`ListPodSandbox`, `ListImages`). When enabled, the kubelet uses server-side
15+
streaming RPCs (e.g., `StreamContainers`, `StreamPodSandboxes`) that allow the
16+
container runtime to divide results across multiple response messages,
17+
bypassing the 16 MiB gRPC message size limit. This allows listing containers
18+
on nodes with thousands of containers without failures. If the container
19+
runtime does not support streaming RPCs, the kubelet falls back to unary RPCs.

0 commit comments

Comments
 (0)