bottlerocket-os / bottlerocket-os/bottlerocket

Support `containerd` config `image_pull_progress_timeout`

Open
#4,679 0 comments 5 reactions 0 assignees View on GitHub
area/containerd status/needs-triage type/enhancement
Dominant language
Rust
Stars
9.7k
Forks
586
Avg merge
1d 11h
Merged PRs (30d)
11

Description

**What I'd like:**
I want to be able to use Bottlerocket APIs to configure the [`image_pull_progress_timeout`](https://github.com/containerd/containerd/blob/18e931808d1546cab2620332cf95a14d238f1394/internal/cri/config/config.go#L326-L333) for containerd. Per the documentation,
> ImagePullProgressTimeout is the maximum duration that there is no image data read from image registry in the open connection. It will be reset whatever a new byte has been read. If timeout, the image pulling will be cancelled. A zero value means there is no timeout.

This by default is set to 5min (see the [code](https://github.com/containerd/containerd/blob/18e931808d1546cab2620332cf95a14d238f1394/internal/cri/config/config.go#L63)), which would cause long image pull time. Being able to set the timeout to be shorter would allow us to trigger the image pull retry faster.

**Note**: This timeout applies globally to all image pulls and resets whenever new data is received, meaning slow but continuous downloads would not be affected.

**Any alternatives you've considered:**
`dial_timeout` provisioned by `config_path` setting, but it is not available yet and is tracked in
https://github.com/bottlerocket-os/bottlerocket/issues/1963

`dial_timeout` handles connection establishment with fallback capabilities, while `image_pull_progress_timeout` monitors data transfer progress without fallback - they serve somewhat different purpose in the image pull process.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.