diff --git a/nodeup/pkg/model/containerd.go b/nodeup/pkg/model/containerd.go index 820eaaeab4..901124687c 100644 --- a/nodeup/pkg/model/containerd.go +++ b/nodeup/pkg/model/containerd.go @@ -499,8 +499,8 @@ func (b *ContainerdBuilder) buildContainerdConfig() (string, error) { for name, endpoints := range containerd.RegistryMirrors { config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "registry", "mirrors", name, "endpoint"}, endpoints) } + config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}, "runc") config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", "runc", "runtime_type"}, "io.containerd.runc.v2") - // only enable systemd cgroups for kubernetes >= 1.20 config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", "runc", "options", "SystemdCgroup"}, true) if b.NodeupConfig.UsesKubenet { // Using containerd with Kubenet requires special configuration. @@ -545,7 +545,7 @@ func appendNvidiaGPURuntimeConfig(config *toml.Tree) error { "privileged_without_host_devices": false, "runtime_engine": "", "runtime_root": "", - "runtime_type": "io.containerd.runc.v1", + "runtime_type": "io.containerd.runc.v2", "options": map[string]interface{}{ "SystemdCgroup": true, "BinaryName": "/usr/bin/nvidia-container-runtime", @@ -557,7 +557,6 @@ func appendNvidiaGPURuntimeConfig(config *toml.Tree) error { } config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", "nvidia"}, gpuConfig) - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}, "runc") return nil } diff --git a/nodeup/pkg/model/containerd_test.go b/nodeup/pkg/model/containerd_test.go index 486c2ef358..19b031e8bb 100644 --- a/nodeup/pkg/model/containerd_test.go +++ b/nodeup/pkg/model/containerd_test.go @@ -200,12 +200,13 @@ func TestAppendGPURuntimeContainerdConfig(t *testing.T) { originalConfig := `version = 2 [plugins] [plugins."io.containerd.grpc.v1.cri"] - [plugins."io.containerd.grpc.v1.cri".containerd] - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] - runtime_type = "io.containerd.runc.v2" - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] - SystemdCgroup = true + [plugins."io.containerd.grpc.v1.cri".containerd] + default_runtime_name = "runc" + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] + runtime_type = "io.containerd.runc.v2" + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] + SystemdCgroup = true ` expectedNewConfig := `version = 2 @@ -223,7 +224,7 @@ func TestAppendGPURuntimeContainerdConfig(t *testing.T) { privileged_without_host_devices = false runtime_engine = "" runtime_root = "" - runtime_type = "io.containerd.runc.v1" + runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options] BinaryName = "/usr/bin/nvidia-container-runtime" diff --git a/pkg/model/components/containerd.go b/pkg/model/components/containerd.go index ae7cfc9e5e..77d2ff5bc2 100644 --- a/pkg/model/components/containerd.go +++ b/pkg/model/components/containerd.go @@ -47,11 +47,16 @@ func (b *ContainerdOptionsBuilder) BuildOptions(o *kops.Cluster) error { containerd.Runc = &kops.Runc{ Version: fi.PtrTo("1.1.5"), } - default: + case b.IsKubernetesLT("1.32"): containerd.Version = fi.PtrTo("1.7.28") containerd.Runc = &kops.Runc{ Version: fi.PtrTo("1.3.0"), } + default: + containerd.Version = fi.PtrTo("2.1.4") + containerd.Runc = &kops.Runc{ + Version: fi.PtrTo("1.3.0"), + } } } // Set default log level to INFO