-
Notifications
You must be signed in to change notification settings - Fork 38.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
kubelet and containerd in endless loop for CreateContainer with unexpected media type octet-stream #124515
Comments
This issue is currently awaiting triage. If a SIG or subproject determines this is a relevant issue, they will accept it by applying the The Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
The error message I see in the logs are probably come from here: |
In the pod events we see thousands of events like: So kubelet thinks that image is already present and successful pulled, but then containerd fails with: |
The containerd fails probably here: Looks like something with the local manifest bookkeeping is not correct, which hinders container creation. Maybe containerd can detect that image layer/manifest is read from local cache and remove erroneous cached local image layers |
/sig node |
containerd should identiffy the corrupt layer and remove it, that's nothing the kubelet should do. The kubelet only tells the runtime to pull images when they're not present on disk. Do you mind moving that issue to the containerd repo? |
opened in containerd as containerd/containerd#10136 |
What happened?
I think the private container registry had some intermittent errors and did return wrong data for some layers.
The problem I think is that kubelet or containerd is in a state were it assumes that a given OCI image is already downloaded locally, but then some parsing of this layer fails and the loop starts again.
What did you expect to happen?
kubelet and or containerd should detect the wrong layer/manifest state and delete the incomplete/erroneous download and pull again from container registry.
How can we reproduce it (as minimally and precisely as possible)?
Not sure, probably container registry needs to return media type octet-stream for some layer/manifest instead of correct media type.
Anything else we need to know?
No response
Kubernetes version
Cloud provider
OS version
Install tools
Container runtime (CRI) and version (if applicable)
Related plugins (CNI, CSI, ...) and versions (if applicable)
The text was updated successfully, but these errors were encountered: