Add container to pod qos cgroup
Signed-off-by: Harry Zhang <harryz@hyper.sh>
This commit is contained in:
parent
1d08519ffe
commit
02dfe877e4
3 changed files with 17 additions and 9 deletions
|
@ -251,6 +251,11 @@ func (s *Server) createSandboxContainer(containerID string, containerName string
|
|||
specgen.SetLinuxResourcesOOMScoreAdj(int(oomScoreAdj))
|
||||
}
|
||||
|
||||
if sb.cgroupParent != "" {
|
||||
// NOTE: we only support cgroupfs for now, discussion happens in issue #270.
|
||||
specgen.SetLinuxCgroupsPath(sb.cgroupParent + "/" + containerID)
|
||||
}
|
||||
|
||||
capabilities := linux.GetSecurityContext().GetCapabilities()
|
||||
if capabilities != nil {
|
||||
addCaps := capabilities.GetAddCapabilities()
|
||||
|
|
|
@ -9,20 +9,20 @@ import (
|
|||
"sync"
|
||||
|
||||
"github.com/Sirupsen/logrus"
|
||||
"github.com/containernetworking/cni/pkg/ns"
|
||||
"github.com/docker/docker/pkg/stringid"
|
||||
"github.com/kubernetes-incubator/cri-o/oci"
|
||||
"github.com/containernetworking/cni/pkg/ns"
|
||||
"golang.org/x/sys/unix"
|
||||
"k8s.io/kubernetes/pkg/fields"
|
||||
pb "k8s.io/kubernetes/pkg/kubelet/api/v1alpha1/runtime"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
type sandboxNetNs struct {
|
||||
sync.Mutex
|
||||
ns ns.NetNS
|
||||
symlink *os.File
|
||||
closed bool
|
||||
restored bool
|
||||
ns ns.NetNS
|
||||
symlink *os.File
|
||||
closed bool
|
||||
restored bool
|
||||
}
|
||||
|
||||
func (ns *sandboxNetNs) symlinkCreate(name string) error {
|
||||
|
@ -138,6 +138,7 @@ type sandbox struct {
|
|||
netns *sandboxNetNs
|
||||
metadata *pb.PodSandboxMetadata
|
||||
shmPath string
|
||||
cgroupParent string
|
||||
}
|
||||
|
||||
const (
|
||||
|
@ -190,7 +191,7 @@ func (s *sandbox) netNsCreate() error {
|
|||
}
|
||||
|
||||
s.netns = &sandboxNetNs{
|
||||
ns: netNS,
|
||||
ns: netNS,
|
||||
closed: false,
|
||||
}
|
||||
|
||||
|
|
|
@ -245,7 +245,9 @@ func (s *Server) RunPodSandbox(ctx context.Context, req *pb.RunPodSandboxRequest
|
|||
// setup cgroup settings
|
||||
cgroupParent := req.GetConfig().GetLinux().GetCgroupParent()
|
||||
if cgroupParent != "" {
|
||||
g.SetLinuxCgroupsPath(cgroupParent)
|
||||
// NOTE: we only support cgroupfs for now, discussion happens in issue #270.
|
||||
g.SetLinuxCgroupsPath(cgroupParent + "/" + containerID)
|
||||
sb.cgroupParent = cgroupParent
|
||||
}
|
||||
|
||||
// set up namespaces
|
||||
|
@ -273,7 +275,7 @@ func (s *Server) RunPodSandbox(ctx context.Context, req *pb.RunPodSandboxRequest
|
|||
if netnsErr := sb.netNsRemove(); netnsErr != nil {
|
||||
logrus.Warnf("Failed to remove networking namespace: %v", netnsErr)
|
||||
}
|
||||
} ()
|
||||
}()
|
||||
|
||||
// Pass the created namespace path to the runtime
|
||||
err = g.AddOrReplaceLinuxNamespace("network", sb.netNsPath())
|
||||
|
|
Loading…
Reference in a new issue