From 4b85e02504adbe7cd8b7b802796fe7e713792724 Mon Sep 17 00:00:00 2001 From: Dawn Chen Date: Wed, 1 Jul 2015 16:37:14 -0700 Subject: [PATCH 1/2] Set minimal shares for containers with no cpu specified --- pkg/kubelet/dockertools/docker.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/kubelet/dockertools/docker.go b/pkg/kubelet/dockertools/docker.go index d0945931aa..7f7b9169c4 100644 --- a/pkg/kubelet/dockertools/docker.go +++ b/pkg/kubelet/dockertools/docker.go @@ -306,8 +306,10 @@ func ConnectToDockerOrDie(dockerEndpoint string) DockerInterface { func milliCPUToShares(milliCPU int64) int64 { if milliCPU == 0 { - // zero milliCPU means unset. Use kernel default. - return 0 + // Docker converts zero milliCPU to unset, which maps to kernel default + // for unset: 1024. Return 2 here to really match kernel default for + // zero milliCPU. + return 2 } // Conceptually (milliCPU / milliCPUToCPU) * sharesPerCPU, but factored to improve rounding. shares := (milliCPU * sharesPerCPU) / milliCPUToCPU From 9ce11545c03c27841428c78c549b914330716d52 Mon Sep 17 00:00:00 2001 From: Dawn Chen Date: Wed, 1 Jul 2015 21:50:03 -0700 Subject: [PATCH 2/2] Explicitly configure master component containers and nginx with 200m each. --- cluster/saltbase/salt/etcd/etcd.manifest | 5 +++++ cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest | 5 +++++ .../kube-controller-manager/kube-controller-manager.manifest | 5 +++++ cluster/saltbase/salt/kube-scheduler/kube-scheduler.manifest | 5 +++++ cluster/saltbase/salt/nginx/nginx.json | 5 +++++ pkg/kubelet/dockertools/docker.go | 2 +- 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/cluster/saltbase/salt/etcd/etcd.manifest b/cluster/saltbase/salt/etcd/etcd.manifest index f263eb5d04..8b4130f886 100644 --- a/cluster/saltbase/salt/etcd/etcd.manifest +++ b/cluster/saltbase/salt/etcd/etcd.manifest @@ -8,6 +8,11 @@ { "name": "etcd-container", "image": "gcr.io/google_containers/etcd:2.0.12", + "resources": { + "limits": { + "cpu": "200m" + } + }, "command": [ "/bin/sh", "-c", diff --git a/cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest b/cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest index 07162880a6..24b8b04b2c 100644 --- a/cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest +++ b/cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest @@ -98,6 +98,11 @@ { "name": "kube-apiserver", "image": "gcr.io/google_containers/kube-apiserver:{{pillar['kube-apiserver_docker_tag']}}", + "resources": { + "limits": { + "cpu": "200m" + } + }, "command": [ "/bin/sh", "-c", diff --git a/cluster/saltbase/salt/kube-controller-manager/kube-controller-manager.manifest b/cluster/saltbase/salt/kube-controller-manager/kube-controller-manager.manifest index c16eb803c9..3303c2f0bc 100644 --- a/cluster/saltbase/salt/kube-controller-manager/kube-controller-manager.manifest +++ b/cluster/saltbase/salt/kube-controller-manager/kube-controller-manager.manifest @@ -46,6 +46,11 @@ { "name": "kube-controller-manager", "image": "gcr.io/google_containers/kube-controller-manager:{{pillar['kube-controller-manager_docker_tag']}}", + "resources": { + "limits": { + "cpu": "200m" + } + }, "command": [ "/bin/sh", "-c", diff --git a/cluster/saltbase/salt/kube-scheduler/kube-scheduler.manifest b/cluster/saltbase/salt/kube-scheduler/kube-scheduler.manifest index 0c0a625a84..d8ad3608b9 100644 --- a/cluster/saltbase/salt/kube-scheduler/kube-scheduler.manifest +++ b/cluster/saltbase/salt/kube-scheduler/kube-scheduler.manifest @@ -8,6 +8,11 @@ { "name": "kube-scheduler", "image": "gcr.io/google_containers/kube-scheduler:{{pillar['kube-scheduler_docker_tag']}}", + "resources": { + "limits": { + "cpu": "200m" + } + }, "command": [ "/bin/sh", "-c", diff --git a/cluster/saltbase/salt/nginx/nginx.json b/cluster/saltbase/salt/nginx/nginx.json index 0ddd23d848..44c41c27d1 100644 --- a/cluster/saltbase/salt/nginx/nginx.json +++ b/cluster/saltbase/salt/nginx/nginx.json @@ -8,6 +8,11 @@ { "name": "nginx", "image": "gcr.io/google-containers/nginx:v1", + "resources": { + "limits": { + "cpu": "200m" + } + }, "command": [ "nginx", "-g", diff --git a/pkg/kubelet/dockertools/docker.go b/pkg/kubelet/dockertools/docker.go index 7f7b9169c4..fe3a145bec 100644 --- a/pkg/kubelet/dockertools/docker.go +++ b/pkg/kubelet/dockertools/docker.go @@ -309,7 +309,7 @@ func milliCPUToShares(milliCPU int64) int64 { // Docker converts zero milliCPU to unset, which maps to kernel default // for unset: 1024. Return 2 here to really match kernel default for // zero milliCPU. - return 2 + return minShares } // Conceptually (milliCPU / milliCPUToCPU) * sharesPerCPU, but factored to improve rounding. shares := (milliCPU * sharesPerCPU) / milliCPUToCPU