From 6af9e97fa5181adf192b02196a6f4fa3be1cc6aa Mon Sep 17 00:00:00 2001 From: FengyunPan2 Date: Fri, 21 Sep 2018 17:50:54 +0800 Subject: [PATCH] Configure resource-only container with memory limit Fixed: #68928 The docker memory limit should base on the memory capacity of machine. Currently CgroupManager specify wrong memory limit. --- pkg/kubelet/dockershim/cm/container_manager_linux.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/dockershim/cm/container_manager_linux.go b/pkg/kubelet/dockershim/cm/container_manager_linux.go index 17baaee11ef..e31e9eac1df 100644 --- a/pkg/kubelet/dockershim/cm/container_manager_linux.go +++ b/pkg/kubelet/dockershim/cm/container_manager_linux.go @@ -101,8 +101,15 @@ func (m *containerManager) doWork() { func createCgroupManager(name string) (*fs.Manager, error) { var memoryLimit uint64 + memoryCapacity, err := getMemoryCapacity() - if err != nil || memoryCapacity*dockerMemoryLimitThresholdPercent/100 < minDockerMemoryLimit { + if err != nil { + glog.Errorf("Failed to get the memory capacity on machine: %v", err) + } else { + memoryLimit = memoryCapacity * dockerMemoryLimitThresholdPercent / 100 + } + + if err != nil || memoryLimit < minDockerMemoryLimit { memoryLimit = minDockerMemoryLimit } glog.V(2).Infof("Configure resource-only container %q with memory limit: %d", name, memoryLimit)