Change:
<!-- This form is for bug reports and feature requests ONLY! If you're looking for help check and the . --Is this a BUG REPORT or FEATURE REQUEST?: What happened: the pause-amd64:3.0 image on has an empty schema2 manifest, which prevents is from being pulled by proxy/caches which only support V2 registries. What you expected to happen: Being able to pull ` using a V2 manifest compatible client. Anything else we need to know?: The proxy/cahce is requesting this
Reiterating the mentions to trigger a notification: <detailsIn response to : Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
After talking with , he mentionned the following
AFAIK, does not support well. After inspecting the image, you can find is still using manifest v1.
/cc FYI
Im not sure which exact version x schéma X is needed. What I know is that we can download through the proxy/cache all other Kubernetes kube-system images, only the pause image is giving us trouble. Therefore, I would say that having the image available using the same format as the other kube-system images would be the request here.
Yeah, we haven't updated the pause image in a while, since it doesn't really ever change. I'm not sure whether rebuilding + pushing over the existing tag is safe, or if we should bump to or something. thoughts?
If we do rebuilding/updating the image, that would help and a bunch of similar issues.
it's better/save to go with new tag
I didn't realize there were changes to the pause binary that were never actually deployed. It seems like we should probably just do that (and bump the tag).
that sounds great. Any idea when the existing 3.0 tag could be pushed again?
We shouldn't push over the 3.0 tag; we should push a 3.1 or 4.0 tag instead. I'm not sure who owns the pause container who should drive this. Maybe sig-node and/or
It seems like it should be sig-node. I'll look into it.
The new container has been built, can you test with
Its working! thanks! I was able to pull it through our artifactory proxy , Lee Verberne <:
excellent, thanks for checking. /assign

Discussion:
<ins> # 3.1 * The pause container gains a signal handler to clean up orphaned zombie processes. ([#36853](https://prs.k8s.io/36853), [@verb](https://github.com/verb)) * `pause -v` will return build information for the pause binary. ([#56762](https://prs.k8s.io/56762), [@verb](https://github.com/verb)) # 3.0 * The pause container was rewritten entirely in C. ([#23009](https://prs.k8s.io/23009), [@uluyol](https://github.com/uluyol)) </ins>

) const ( <del> validTmpl    = "image: {{ .ImageRepository }}/pause-{{ .Arch }}:3.0" validTmplOut = "image: gcr.io/google_containers/pause-amd64:3.0" doNothing    = "image: gcr.io/google_containers/pause-amd64:3.0" </del> <ins> validTmpl    = "image: {{ .ImageRepository }}/pause-{{ .Arch }}:3.1" validTmplOut = "image: gcr.io/google_containers/pause-amd64:3.1" doNothing    = "image: gcr.io/google_containers/pause-amd64:3.1" </ins> invalidTmpl1 = "{{ .baz }/d}" invalidTmpl2 = "{{ !foobar }}" )

) const ( <del> // When these values are updated, also update test/e2e/framework/util.go </del> <ins> // When these values are updated, also update test/utils/image/manifest.go </ins> defaultPodSandboxImageName    = "gcr.io/google_containers/pause" <del> defaultPodSandboxImageVersion = "3.0" </del> <ins> defaultPodSandboxImageVersion = "3.1" </ins> // From pkg/kubelet/rkt/rkt.go to avoid circular import defaultRktAPIServiceEndpoint = "localhost:15441" )

kube::test::get_object_assert pods "{{range.items}}{{$image_field}}:{{end}}" 'changed-with-yaml:' ## Patch pod from JSON can change image # Command <del> kubectl patch "${kube_flags[@]}" -f test/fixtures/doc-yaml/admin/limitrange/valid-pod.yaml -p='{"spec":{"containers":[{"name": "kubernetes-serve-hostname", "image": "gcr.io/google_containers/pause-amd64:3.0"}]}}' # Post-condition: valid-pod POD has image gcr.io/google_containers/pause-amd64:3.0 kube::test::get_object_assert pods "{{range.items}}{{$image_field}}:{{end}}" 'gcr.io/google_containers/pause-amd64:3.0:' </del> <ins> kubectl patch "${kube_flags[@]}" -f test/fixtures/doc-yaml/admin/limitrange/valid-pod.yaml -p='{"spec":{"containers":[{"name": "kubernetes-serve-hostname", "image": "gcr.io/google_containers/pause-amd64:3.1"}]}}' # Post-condition: valid-pod POD has image gcr.io/google_containers/pause-amd64:3.1 kube::test::get_object_assert pods "{{range.items}}{{$image_field}}:{{end}}" 'gcr.io/google_containers/pause-amd64:3.1:' </ins> ## If resourceVersion is specified in the patch, it will be treated as a precondition, i.e., if the resourceVersion is different from that is stored in the server, the Patch should be rejected ERROR_FILE="${KUBE_TEMP}/conflict-error"

"containers": [ { "name": "kubernetes-pause", <del> "image": "gcr.io/google_containers/pause-amd64:3.0" </del> <ins> "image": "gcr.io/google_containers/pause-amd64:3.1" </ins> } ], "restartPolicy": "Never",

) const ( <del> defaultSandboxImage = "gcr.io/google_containers/pause-amd64:3.0" </del> <ins> defaultSandboxImage = "gcr.io/google_containers/pause-amd64:3.1" </ins> // Various default sandbox resources requests/limits. defaultSandboxCPUshares int64 = 2

"spec": { "containers": [{ "name": "test-container", <del> "image": "gcr.io/google_containers/pause-amd64:3.0" </del> <ins> "image": "gcr.io/google_containers/pause-amd64:3.1" </ins> }] } }

) const ( <del> // When these values are updated, also update cmd/kubelet/app/options/options.go // A copy of these values exist in e2e/framework/util.go. </del> <ins> // When these values are updated, also update cmd/kubelet/app/options/container_runtime.go // A copy of these values exist in test/utils/image/manifest.go </ins> currentPodInfraContainerImageName    = "gcr.io/google_containers/pause" <del> currentPodInfraContainerImageVersion = "3.0" </del> <ins> currentPodInfraContainerImageVersion = "3.1" </ins> ) // GetServerArchitecture fetches the architecture of the cluster's apiserver.

NoSnatTest               = ImageConfig{e2eRegistry, "no-snat-test", "1.0", true} NoSnatTestProxy          = ImageConfig{e2eRegistry, "no-snat-test-proxy", "1.0", true} NWayHTTP                 = ImageConfig{e2eRegistry, "n-way-http", "1.0", true} <del> // When these values are updated, also update cmd/kubelet/app/options/options.go Pause               = ImageConfig{gcRegistry, "pause", "3.0", true} </del> <ins> // When these values are updated, also update cmd/kubelet/app/options/container_runtime.go Pause               = ImageConfig{gcRegistry, "pause", "3.1", true} </ins> Porter              = ImageConfig{e2eRegistry, "porter", "1.0", true} PortForwardTester   = ImageConfig{e2eRegistry, "port-forward-tester", "1.0", true} Redis               = ImageConfig{e2eRegistry, "redis", "1.0", true}