Set default sandbox container cpu shares on windows.
Signed-off-by: Lantao Liu <lantaol@google.com>
This commit is contained in:
parent
bad68a8270
commit
f3ef10e9a2
@ -31,6 +31,10 @@ import (
|
|||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// DefaultSandboxCPUshares is default cpu shares for sandbox container.
|
||||||
|
// TODO(windows): Revisit cpu shares for windows (https://github.com/containerd/cri/issues/1297)
|
||||||
|
const DefaultSandboxCPUshares = 2
|
||||||
|
|
||||||
// WithRelativeRoot sets the root for the container
|
// WithRelativeRoot sets the root for the container
|
||||||
func WithRelativeRoot(root string) oci.SpecOpts {
|
func WithRelativeRoot(root string) oci.SpecOpts {
|
||||||
return func(ctx context.Context, client oci.Client, c *containers.Container, s *runtimespec.Spec) (err error) {
|
return func(ctx context.Context, client oci.Client, c *containers.Container, s *runtimespec.Spec) (err error) {
|
||||||
|
@ -43,13 +43,6 @@ import (
|
|||||||
"github.com/containerd/cri/pkg/util"
|
"github.com/containerd/cri/pkg/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
// DefaultSandboxCPUshares is default cpu shares for sandbox container.
|
|
||||||
// TODO(windows): Evaluate whether this can be used for windows sandbox
|
|
||||||
// container cpu shares.
|
|
||||||
DefaultSandboxCPUshares = 2
|
|
||||||
)
|
|
||||||
|
|
||||||
// WithAdditionalGIDs adds any additional groups listed for a particular user in the
|
// WithAdditionalGIDs adds any additional groups listed for a particular user in the
|
||||||
// /etc/groups file of the image's root filesystem to the OCI spec's additionalGids array.
|
// /etc/groups file of the image's root filesystem to the OCI spec's additionalGids array.
|
||||||
func WithAdditionalGIDs(userstr string) oci.SpecOpts {
|
func WithAdditionalGIDs(userstr string) oci.SpecOpts {
|
||||||
|
@ -172,3 +172,19 @@ func WithWindowsResources(resources *runtime.WindowsContainerResources) oci.Spec
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithWindowsDefaultSandboxShares sets the default sandbox CPU shares
|
||||||
|
func WithWindowsDefaultSandboxShares(ctx context.Context, client oci.Client, c *containers.Container, s *runtimespec.Spec) error {
|
||||||
|
if s.Windows == nil {
|
||||||
|
s.Windows = &runtimespec.Windows{}
|
||||||
|
}
|
||||||
|
if s.Windows.Resources == nil {
|
||||||
|
s.Windows.Resources = &runtimespec.WindowsResources{}
|
||||||
|
}
|
||||||
|
if s.Windows.Resources.CPU == nil {
|
||||||
|
s.Windows.Resources.CPU = &runtimespec.WindowsCPUResources{}
|
||||||
|
}
|
||||||
|
i := uint16(DefaultSandboxCPUshares)
|
||||||
|
s.Windows.Resources.CPU.Shares = &i
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -30,7 +30,6 @@ import (
|
|||||||
customopts "github.com/containerd/cri/pkg/containerd/opts"
|
customopts "github.com/containerd/cri/pkg/containerd/opts"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO(windows): Configure windows sandbox shares
|
|
||||||
func (c *criService) sandboxContainerSpec(id string, config *runtime.PodSandboxConfig,
|
func (c *criService) sandboxContainerSpec(id string, config *runtime.PodSandboxConfig,
|
||||||
imageConfig *imagespec.ImageConfig, nsPath string, runtimePodAnnotations []string) (*runtimespec.Spec, error) {
|
imageConfig *imagespec.ImageConfig, nsPath string, runtimePodAnnotations []string) (*runtimespec.Spec, error) {
|
||||||
// Creates a spec Generator with the default spec.
|
// Creates a spec Generator with the default spec.
|
||||||
@ -55,6 +54,8 @@ func (c *criService) sandboxContainerSpec(id string, config *runtime.PodSandboxC
|
|||||||
customopts.WithWindowsNetworkNamespace(nsPath),
|
customopts.WithWindowsNetworkNamespace(nsPath),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
specOpts = append(specOpts, customopts.WithWindowsDefaultSandboxShares)
|
||||||
|
|
||||||
for pKey, pValue := range getPassthroughAnnotations(config.Annotations,
|
for pKey, pValue := range getPassthroughAnnotations(config.Annotations,
|
||||||
runtimePodAnnotations) {
|
runtimePodAnnotations) {
|
||||||
specOpts = append(specOpts, customopts.WithAnnotation(pKey, pValue))
|
specOpts = append(specOpts, customopts.WithAnnotation(pKey, pValue))
|
||||||
|
@ -27,6 +27,7 @@ import (
|
|||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
|
||||||
|
|
||||||
"github.com/containerd/cri/pkg/annotations"
|
"github.com/containerd/cri/pkg/annotations"
|
||||||
|
"github.com/containerd/cri/pkg/containerd/opts"
|
||||||
)
|
)
|
||||||
|
|
||||||
func getRunPodSandboxTestData() (*runtime.PodSandboxConfig, *imagespec.ImageConfig, func(*testing.T, string, *runtimespec.Spec)) {
|
func getRunPodSandboxTestData() (*runtime.PodSandboxConfig, *imagespec.ImageConfig, func(*testing.T, string, *runtimespec.Spec)) {
|
||||||
@ -54,6 +55,7 @@ func getRunPodSandboxTestData() (*runtime.PodSandboxConfig, *imagespec.ImageConf
|
|||||||
assert.Contains(t, spec.Process.Env, "a=b", "c=d")
|
assert.Contains(t, spec.Process.Env, "a=b", "c=d")
|
||||||
assert.Equal(t, []string{"/pause", "forever"}, spec.Process.Args)
|
assert.Equal(t, []string{"/pause", "forever"}, spec.Process.Args)
|
||||||
assert.Equal(t, "/workspace", spec.Process.Cwd)
|
assert.Equal(t, "/workspace", spec.Process.Cwd)
|
||||||
|
assert.EqualValues(t, *spec.Windows.Resources.CPU.Shares, opts.DefaultSandboxCPUshares)
|
||||||
|
|
||||||
t.Logf("Check PodSandbox annotations")
|
t.Logf("Check PodSandbox annotations")
|
||||||
assert.Contains(t, spec.Annotations, annotations.SandboxID)
|
assert.Contains(t, spec.Annotations, annotations.SandboxID)
|
||||||
|
Loading…
Reference in New Issue
Block a user