diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index b493d9c773f..10011075255 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -71,6 +71,7 @@ import ( nodeutil "k8s.io/kubernetes/pkg/util/node" "k8s.io/kubernetes/pkg/util/oom" "k8s.io/kubernetes/pkg/util/resourcecontainer" + "k8s.io/kubernetes/pkg/util/rlimit" "k8s.io/kubernetes/pkg/util/runtime" "k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/version" @@ -688,7 +689,7 @@ func RunKubelet(kcfg *KubeletConfig) error { return fmt.Errorf("failed to create kubelet: %v", err) } - resourcecontainer.ApplyRLimitForSelf(kcfg.MaxOpenFiles) + rlimit.RlimitNumFiles(kcfg.MaxOpenFiles) // TODO(dawnchen): remove this once we deprecated old debian containervm images. // This is a workaround for issue: https://github.com/opencontainers/runc/issues/726 diff --git a/pkg/util/resourcecontainer/resource_container_linux.go b/pkg/util/resourcecontainer/resource_container_linux.go index 6ea75b2eb3a..dc8e1909a94 100644 --- a/pkg/util/resourcecontainer/resource_container_linux.go +++ b/pkg/util/resourcecontainer/resource_container_linux.go @@ -43,7 +43,3 @@ func RunInResourceContainer(containerName string) error { return manager.Apply(os.Getpid()) } - -func ApplyRLimitForSelf(maxOpenFiles uint64) { - syscall.Setrlimit(syscall.RLIMIT_NOFILE, &syscall.Rlimit{Max: maxOpenFiles, Cur: maxOpenFiles}) -} diff --git a/pkg/util/resourcecontainer/resource_container_unsupported.go b/pkg/util/resourcecontainer/resource_container_unsupported.go index 0bfb79bb591..da471312651 100644 --- a/pkg/util/resourcecontainer/resource_container_unsupported.go +++ b/pkg/util/resourcecontainer/resource_container_unsupported.go @@ -25,7 +25,3 @@ import ( func RunInResourceContainer(containerName string) error { return errors.New("resource-only containers unsupported in this platform") } - -func ApplyRLimitForSelf(maxOpenFiles uint64) error { - return errors.New("SetRLimit unsupported in this platform") -} diff --git a/pkg/util/rlimit/rlimit_linux.go b/pkg/util/rlimit/rlimit_linux.go new file mode 100644 index 00000000000..c7d383d8090 --- /dev/null +++ b/pkg/util/rlimit/rlimit_linux.go @@ -0,0 +1,27 @@ +// +build linux + +/* +Copyright 2016 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rlimit + +import ( + "syscall" +) + +func RlimitNumFiles(maxOpenFiles uint64) { + syscall.Setrlimit(syscall.RLIMIT_NOFILE, &syscall.Rlimit{Max: maxOpenFiles, Cur: maxOpenFiles}) +} diff --git a/pkg/util/rlimit/rlimit_unsupported.go b/pkg/util/rlimit/rlimit_unsupported.go new file mode 100644 index 00000000000..6759681b36f --- /dev/null +++ b/pkg/util/rlimit/rlimit_unsupported.go @@ -0,0 +1,27 @@ +// +build !linux + +/* +Copyright 2016 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rlimit + +import ( + "errors" +) + +func RlimitNumFiles(maxOpenFiles uint64) error { + return errors.New("SetRLimit unsupported in this platform") +}