Merge pull request #451 from abhi/cgroup-shim

Setting containerd shim cgroup same as pod cgroup
This commit is contained in:
Lantao Liu 2017-12-01 10:21:16 -08:00 committed by GitHub
commit 4a5431e10a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 3 deletions

22
pkg/opts/task.go Normal file
View 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.

View File

@ -27,6 +27,7 @@ import (
"golang.org/x/net/context" "golang.org/x/net/context"
"k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime" "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" cio "github.com/kubernetes-incubator/cri-containerd/pkg/server/io"
containerstore "github.com/kubernetes-incubator/cri-containerd/pkg/store/container" 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 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 { if err != nil {
return fmt.Errorf("failed to create containerd task: %v", err) return fmt.Errorf("failed to create containerd task: %v", err)
} }

View File

@ -36,6 +36,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime" "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
customopts "github.com/kubernetes-incubator/cri-containerd/pkg/containerd/opts" 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" sandboxstore "github.com/kubernetes-incubator/cri-containerd/pkg/store/sandbox"
"github.com/kubernetes-incubator/cri-containerd/pkg/util" "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).", glog.V(5).Infof("Create sandbox container (id=%q, name=%q).",
id, name) id, name)
// We don't need stdio for sandbox container. // 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 { 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() { defer func() {
if retErr != nil { if retErr != nil {