From fae4f790605286e8984cea3bec186ea6b730085d Mon Sep 17 00:00:00 2001 From: Lantao Liu Date: Wed, 3 Apr 2019 18:47:25 -0700 Subject: [PATCH] Enable runc.v2 as the default runtime in test. Signed-off-by: Lantao Liu --- cluster/gce/configure.sh | 8 ++++---- pkg/server/helpers.go | 10 +++++++--- pkg/server/helpers_test.go | 32 +++++++++++++++++++++++++++----- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/cluster/gce/configure.sh b/cluster/gce/configure.sh index 6dc35ea40..69ddf8211 100755 --- a/cluster/gce/configure.sh +++ b/cluster/gce/configure.sh @@ -164,10 +164,6 @@ disabled_plugins = ["restart"] [debug] level = "${log_level}" -[plugins.linux] - shim = "${CONTAINERD_HOME}/usr/local/bin/containerd-shim" - runtime = "${CONTAINERD_HOME}/usr/local/sbin/runc" - [plugins.cri] stream_server_address = "127.0.0.1" stream_server_port = "0" @@ -178,6 +174,10 @@ disabled_plugins = ["restart"] conf_template = "${cni_template_path}" [plugins.cri.registry.mirrors."docker.io"] endpoint = ["https://mirror.gcr.io","https://registry-1.docker.io"] +[plugins.cri.containerd.default_runtime] + runtime_type = "io.containerd.runc.v2" +[plugins.cri.containerd.default_runtime.options] + BinaryName = "${CONTAINERD_HOME}/usr/local/sbin/runc" EOF chmod 644 "${config_path}" diff --git a/pkg/server/helpers.go b/pkg/server/helpers.go index 6dd5a14bd..23606a687 100644 --- a/pkg/server/helpers.go +++ b/pkg/server/helpers.go @@ -122,8 +122,10 @@ const ( const ( // linuxRuntime is the legacy linux runtime for shim v1. linuxRuntime = "io.containerd.runtime.v1.linux" - // runcRuntime is the runc runtime for shim v2. - runcRuntime = "io.containerd.runc.v1" + // runcRuntimeV1 is the runc v1 runtime for shim v2. + runcRuntimeV1 = "io.containerd.runc.v1" + // runcRuntimeV2 is the runc v2 runtime for shim v2. + runcRuntimeV2 = "io.containerd.runc.v2" ) // makeSandboxName generates sandbox name from sandbox metadata. The name @@ -427,7 +429,9 @@ func generateRuntimeOptions(r criconfig.Runtime, c criconfig.Config) (interface{ // getRuntimeOptionsType gets empty runtime options by the runtime type name. func getRuntimeOptionsType(t string) interface{} { switch t { - case runcRuntime: + case runcRuntimeV1: + fallthrough + case runcRuntimeV2: return &runcoptions.Options{} case linuxRuntime: return &runctypes.RuncOptions{} diff --git a/pkg/server/helpers_test.go b/pkg/server/helpers_test.go index cc9d08029..2a137be93 100644 --- a/pkg/server/helpers_test.go +++ b/pkg/server/helpers_test.go @@ -215,7 +215,9 @@ systemd_cgroup = true [containerd.default_runtime] runtime_type = "` + linuxRuntime + `" [containerd.runtimes.runc] - runtime_type = "` + runcRuntime + `" + runtime_type = "` + runcRuntimeV1 + `" +[containerd.runtimes.runcv2] + runtime_type = "` + runcRuntimeV2 + `" ` nonNilOpts := ` systemd_cgroup = true @@ -227,30 +229,41 @@ systemd_cgroup = true Runtime = "default" RuntimeRoot = "/default" [containerd.runtimes.runc] - runtime_type = "` + runcRuntime + `" + runtime_type = "` + runcRuntimeV1 + `" [containerd.runtimes.runc.options] BinaryName = "runc" Root = "/runc" NoNewKeyring = true +[containerd.runtimes.runcv2] + runtime_type = "` + runcRuntimeV2 + `" +[containerd.runtimes.runcv2.options] + BinaryName = "runc" + Root = "/runcv2" + NoNewKeyring = true ` var nilOptsConfig, nonNilOptsConfig criconfig.Config _, err := toml.Decode(nilOpts, &nilOptsConfig) require.NoError(t, err) _, err = toml.Decode(nonNilOpts, &nonNilOptsConfig) require.NoError(t, err) - require.Len(t, nilOptsConfig.Runtimes, 1) - require.Len(t, nonNilOptsConfig.Runtimes, 1) + require.Len(t, nilOptsConfig.Runtimes, 2) + require.Len(t, nonNilOptsConfig.Runtimes, 2) for desc, test := range map[string]struct { r criconfig.Runtime c criconfig.Config expectedOptions interface{} }{ - "when options is nil, should return nil option for non legacy runtime": { + "when options is nil, should return nil option for io.containerd.runc.v1": { r: nilOptsConfig.Runtimes["runc"], c: nilOptsConfig, expectedOptions: nil, }, + "when options is nil, should return nil option for io.containerd.runc.v2": { + r: nilOptsConfig.Runtimes["runcv2"], + c: nilOptsConfig, + expectedOptions: nil, + }, "when options is nil, should use legacy fields for legacy runtime": { r: nilOptsConfig.DefaultRuntime, c: nilOptsConfig, @@ -267,6 +280,15 @@ systemd_cgroup = true NoNewKeyring: true, }, }, + "when options is not nil, should be able to decode for io.containerd.runc.v2": { + r: nonNilOptsConfig.Runtimes["runcv2"], + c: nonNilOptsConfig, + expectedOptions: &runcoptions.Options{ + BinaryName: "runc", + Root: "/runcv2", + NoNewKeyring: true, + }, + }, "when options is not nil, should be able to decode for legacy runtime": { r: nonNilOptsConfig.DefaultRuntime, c: nonNilOptsConfig,