8000 Merge pull request #3848 from BenTheElder/containerd202 · orange-guo/kind@bc142d0 · GitHub
[go: up one dir, main page]

Skip to content

Commit bc142d0

Browse files
authored
Merge pull request kubernetes-sigs#3848 from BenTheElder/containerd202
update to latest base image with containerd 2.0.2, ensure containerd is ready before importing images
2 parents c8e1240 + 33d8c7a commit bc142d0

File tree

4 files changed

+40
-9
lines changed

4 files changed

+40
-9
lines changed

pkg/apis/config/defaults/image.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ limitations under the License.
1818
package defaults
1919

2020
// Image is the default for the Config.Image field, aka the default node image.
21-
const Image = "kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027"
21+
const Image = "kindest/node:v1.32.1@sha256:6afef2b7f69d627ea7bf27ee6696b6868d18e03bf98167c420df486da4662db6"

pkg/build/nodeimage/buildcontext.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -267,18 +267,27 @@ func (c *buildContext) prePullImagesAndWriteManifests(bits kube.Bits, parsedVers
267267
}()
268268

269269
fns := []func() error{}
270+
osArch := dockerBuildOsAndArch(c.arch)
270271
for _, image := range requiredImages {
271272
image := image // https://golang.org/doc/faq#closures_and_goroutines
272-
fns = append(fns, func() error {
273-
if !builtImages.Has(image) {
274-
if err = importer.Pull(image, dockerBuildOsAndArch(c.arch)); err != nil {
273+
if !builtImages.Has(image) {
274+
fns = append(fns, func() error {
275+
if err = importer.Pull(image, osArch); err != nil {
275276
c.logger.Warnf("Failed to pull %s with error: %v", image, err)
276277
runE := exec.RunErrorForError(err)
277278
c.logger.Warn(string(runE.Output))
279+
c.logger.Warnf("Retrying %s pull after 1s ...", image)
280+
time.Sleep(time.Second)
281+
return importer.Pull(image, osArch)
278282
}
279-
}
280-
return nil
281-
})
283+
return nil
284+
})
285+
}
286+
}
287+
// Wait for containerd socket to be ready, which may take 1s when running under emulation
288+
if err := importer.WaitForReady(); err != nil {
289+
c.logger.Errorf("Image build failed, containerd did not become ready %v", err)
290+
return nil, err
282291
}
283292
if err := errors.AggregateConcurrent(fns); err != nil {
284293
return nil, err
< 10BC0 div class="Diff-module__diffHeaderWrapper--DiwLD" style="--header-sticky-offset:0px">

pkg/build/nodeimage/defaults.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ const DefaultImage = "kindest/node:latest"
2222
// DefaultBaseImage is the default base image used
2323
// TODO: come up with a reasonable solution to digest pinning
2424
// https://github.com/moby/moby/issues/43188
25-
const DefaultBaseImage = "docker.io/kindest/base:v20241212-9f82dd49"
25+
const DefaultBaseImage = "docker.io/kindest/base:v20250117-f528b021"

pkg/build/nodeimage/imageimporter.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package nodeimage
1919
import (
2020
"io"
2121

22+
"sigs.k8s.io/kind/pkg/errors"
2223
"sigs.k8s.io/kind/pkg/exec"
2324
)
2425

@@ -38,7 +39,28 @@ func (c *containerdImporter) Prepare() error {
3839
).Run(); err != nil {
3940
return err
4041
}
41-
// TODO(bentheelder): some healthcheck?
42+
return nil
43+
}
44+
45+
func (c *containerdImporter) WaitForReady() error {
46+
// ctr doesn't respect timeouts when the socket doesn't exist
47+
// so we'll look for the socket to exist ourselves, THEN attempt ctr info
48+
// TODO: we are assuming the socket path, and this is kind of hacky
49+
if err := c.containerCmder.Command(
50+
"bash", "-c", `set -e
51+
# wait for socket to exist
52+
for i in {0..3}; do
53+
if [ -S /run/containerd/containerd.sock ]; then
54+
break
55+
fi
56+
sleep "$i"
57+
done
58+
# check healthy
59+
ctr info
60+
`,
61+
).Run(); err != nil {
62+
return errors.Wrap(err, "failed to wait for containerd to become ready")
63+
}
4264
return nil
4365
}
4466

0 commit comments

Comments
 (0)
0