Setting containerd shim cgroup same as pod cgroup
Signed-off-by: abhi <abhi@docker.com>
This commit is contained in:
parent
0db6e04ba1
commit
0d6774f4af
22
pkg/opts/task.go
Normal file
22
pkg/opts/task.go
Normal file
@ -0,0 +1,22 @@
|
||||
package opts
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/containerd/containerd"
|
||||
"github.com/containerd/containerd/linux/runctypes"
|
||||
)
|
||||
|
||||
// WithContainerdShimCgroup returns function that sets the containerd
|
||||
// shim cgroup path
|
||||
func WithContainerdShimCgroup(path string) containerd.NewTaskOpts {
|
||||
return func(_ context.Context, _ *containerd.Client, r *containerd.TaskInfo) error {
|
||||
r.Options = &runctypes.CreateOptions{
|
||||
ShimCgroup: path,
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: Since Options is an interface different WithXXX will be needed to set different
|
||||
// combinations of CreateOptions.
|
@ -27,6 +27,7 @@ import (
|
||||
"golang.org/x/net/context"
|
||||
"k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
|
||||
|
||||
criopts "github.com/kubernetes-incubator/cri-containerd/pkg/opts"
|
||||
cio "github.com/kubernetes-incubator/cri-containerd/pkg/server/io"
|
||||
containerstore "github.com/kubernetes-incubator/cri-containerd/pkg/store/container"
|
||||
)
|
||||
@ -126,7 +127,11 @@ func (c *criContainerdService) startContainer(ctx context.Context,
|
||||
return cntr.IO, nil
|
||||
}
|
||||
|
||||
task, err := container.NewTask(ctx, ioCreation)
|
||||
var taskOpts []containerd.NewTaskOpts
|
||||
if cgroup := sandbox.Config.GetLinux().GetCgroupParent(); cgroup != "" {
|
||||
taskOpts = append(taskOpts, criopts.WithContainerdShimCgroup(cgroup))
|
||||
}
|
||||
task, err := container.NewTask(ctx, ioCreation, taskOpts...)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create containerd task: %v", err)
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
|
||||
|
||||
customopts "github.com/kubernetes-incubator/cri-containerd/pkg/containerd/opts"
|
||||
criopts "github.com/kubernetes-incubator/cri-containerd/pkg/opts"
|
||||
sandboxstore "github.com/kubernetes-incubator/cri-containerd/pkg/store/sandbox"
|
||||
"github.com/kubernetes-incubator/cri-containerd/pkg/util"
|
||||
)
|
||||
@ -205,9 +206,13 @@ func (c *criContainerdService) RunPodSandbox(ctx context.Context, r *runtime.Run
|
||||
glog.V(5).Infof("Create sandbox container (id=%q, name=%q).",
|
||||
id, name)
|
||||
// We don't need stdio for sandbox container.
|
||||
task, err := container.NewTask(ctx, containerdio.NullIO)
|
||||
var taskOpts []containerd.NewTaskOpts
|
||||
if cgroup := config.GetLinux().GetCgroupParent(); cgroup != "" {
|
||||
taskOpts = append(taskOpts, criopts.WithContainerdShimCgroup(cgroup))
|
||||
}
|
||||
task, err := container.NewTask(ctx, containerdio.NullIO, taskOpts...)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create task for sandbox %q: %v", id, err)
|
||||
return nil, fmt.Errorf("failed to create containerd task: %v", err)
|
||||
}
|
||||
defer func() {
|
||||
if retErr != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user