Merge pull request #80296 from bart0sh/PR0072-remove-util-procfs-dependency

kubeadm: remove dependency on pkg/util/procfs
This commit is contained in:
Kubernetes Prow Robot 2019-07-20 00:40:54 -07:00 committed by GitHub
commit cfabadb0eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 36 deletions

View File

@ -83,7 +83,6 @@
"k8s.io/kubernetes/pkg/util/ipvs", "k8s.io/kubernetes/pkg/util/ipvs",
"k8s.io/kubernetes/pkg/util/metrics", "k8s.io/kubernetes/pkg/util/metrics",
"k8s.io/kubernetes/pkg/util/parsers", "k8s.io/kubernetes/pkg/util/parsers",
"k8s.io/kubernetes/pkg/util/procfs",
"k8s.io/kubernetes/pkg/util/sysctl", "k8s.io/kubernetes/pkg/util/sysctl",
"k8s.io/kubernetes/pkg/util/taints" "k8s.io/kubernetes/pkg/util/taints"
], ],

View File

@ -19,7 +19,6 @@ go_library(
"//cmd/kubeadm/app/util/apiclient:go_default_library", "//cmd/kubeadm/app/util/apiclient:go_default_library",
"//cmd/kubeadm/app/util/initsystem:go_default_library", "//cmd/kubeadm/app/util/initsystem:go_default_library",
"//pkg/kubelet/apis/config:go_default_library", "//pkg/kubelet/apis/config:go_default_library",
"//pkg/util/procfs:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/rbac/v1:go_default_library", "//staging/src/k8s.io/api/rbac/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",

View File

@ -29,7 +29,7 @@ import (
"k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/images" "k8s.io/kubernetes/cmd/kubeadm/app/images"
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
"k8s.io/kubernetes/pkg/util/procfs" "k8s.io/kubernetes/cmd/kubeadm/app/util/initsystem"
utilsexec "k8s.io/utils/exec" utilsexec "k8s.io/utils/exec"
) )
@ -39,7 +39,7 @@ type kubeletFlagsOpts struct {
pauseImage string pauseImage string
registerTaintsUsingFlags bool registerTaintsUsingFlags bool
execer utilsexec.Interface execer utilsexec.Interface
pidOfFunc func(string) ([]int, error) isServiceActiveFunc func(string) (bool, error)
defaultHostname string defaultHostname string
} }
@ -57,8 +57,14 @@ func WriteKubeletDynamicEnvFile(cfg *kubeadmapi.ClusterConfiguration, nodeReg *k
pauseImage: images.GetPauseImage(cfg), pauseImage: images.GetPauseImage(cfg),
registerTaintsUsingFlags: registerTaintsUsingFlags, registerTaintsUsingFlags: registerTaintsUsingFlags,
execer: utilsexec.New(), execer: utilsexec.New(),
pidOfFunc: procfs.PidOf, isServiceActiveFunc: func(name string) (bool, error) {
defaultHostname: hostName, initSystem, err := initsystem.GetInitSystem()
if err != nil {
return false, err
}
return initSystem.ServiceIsActive(name), nil
},
defaultHostname: hostName,
} }
stringMap := buildKubeletArgMap(flagOpts) stringMap := buildKubeletArgMap(flagOpts)
argList := kubeadmutil.BuildArgumentListFromMap(stringMap, nodeReg.KubeletExtraArgs) argList := kubeadmutil.BuildArgumentListFromMap(stringMap, nodeReg.KubeletExtraArgs)
@ -98,8 +104,11 @@ func buildKubeletArgMap(opts kubeletFlagsOpts) map[string]string {
kubeletFlags["register-with-taints"] = strings.Join(taintStrs, ",") kubeletFlags["register-with-taints"] = strings.Join(taintStrs, ",")
} }
if pids, _ := opts.pidOfFunc("systemd-resolved"); len(pids) > 0 { ok, err := opts.isServiceActiveFunc("systemd-resolved")
// procfs.PidOf only returns an error if the regex is empty or doesn't compile, so we can ignore it if err != nil {
klog.Warningf("cannot determine if systemd-resolved is active: %v\n", err)
}
if ok {
kubeletFlags["resolv-conf"] = "/run/systemd/resolve/resolv.conf" kubeletFlags["resolv-conf"] = "/run/systemd/resolve/resolv.conf"
} }

View File

@ -25,7 +25,7 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
"k8s.io/utils/exec" "k8s.io/utils/exec"
) )
@ -89,12 +89,12 @@ var (
} }
) )
func binaryRunningPidOfFunc(_ string) ([]int, error) { func serviceIsActiveFunc(_ string) (bool, error) {
return []int{1, 2, 3}, nil return true, nil
} }
func binaryNotRunningPidOfFunc(_ string) ([]int, error) { func serviceIsNotActiveFunc(_ string) (bool, error) {
return []int{}, nil return false, nil
} }
func TestBuildKubeletArgMap(t *testing.T) { func TestBuildKubeletArgMap(t *testing.T) {
@ -118,9 +118,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
}, },
}, },
}, },
execer: errCgroupExecer, execer: errCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc, isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo", defaultHostname: "foo",
}, },
expected: map[string]string{ expected: map[string]string{
"network-plugin": "cni", "network-plugin": "cni",
@ -133,9 +133,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/dockershim.sock", CRISocket: "/var/run/dockershim.sock",
Name: "override-name", Name: "override-name",
}, },
execer: errCgroupExecer, execer: errCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc, isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "default", defaultHostname: "default",
}, },
expected: map[string]string{ expected: map[string]string{
"network-plugin": "cni", "network-plugin": "cni",
@ -149,9 +149,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/dockershim.sock", CRISocket: "/var/run/dockershim.sock",
Name: "foo", Name: "foo",
}, },
execer: systemdCgroupExecer, execer: systemdCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc, isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo", defaultHostname: "foo",
}, },
expected: map[string]string{ expected: map[string]string{
"network-plugin": "cni", "network-plugin": "cni",
@ -165,9 +165,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/dockershim.sock", CRISocket: "/var/run/dockershim.sock",
Name: "foo", Name: "foo",
}, },
execer: cgroupfsCgroupExecer, execer: cgroupfsCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc, isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo", defaultHostname: "foo",
}, },
expected: map[string]string{ expected: map[string]string{
"network-plugin": "cni", "network-plugin": "cni",
@ -181,9 +181,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/containerd.sock", CRISocket: "/var/run/containerd.sock",
Name: "foo", Name: "foo",
}, },
execer: cgroupfsCgroupExecer, execer: cgroupfsCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc, isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo", defaultHostname: "foo",
}, },
expected: map[string]string{ expected: map[string]string{
"container-runtime": "remote", "container-runtime": "remote",
@ -211,7 +211,7 @@ func TestBuildKubeletArgMap(t *testing.T) {
}, },
registerTaintsUsingFlags: true, registerTaintsUsingFlags: true,
execer: cgroupfsCgroupExecer, execer: cgroupfsCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc, isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo", defaultHostname: "foo",
}, },
expected: map[string]string{ expected: map[string]string{
@ -227,9 +227,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/containerd.sock", CRISocket: "/var/run/containerd.sock",
Name: "foo", Name: "foo",
}, },
execer: cgroupfsCgroupExecer, execer: cgroupfsCgroupExecer,
pidOfFunc: binaryRunningPidOfFunc, isServiceActiveFunc: serviceIsActiveFunc,
defaultHostname: "foo", defaultHostname: "foo",
}, },
expected: map[string]string{ expected: map[string]string{
"container-runtime": "remote", "container-runtime": "remote",
@ -244,10 +244,10 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/dockershim.sock", CRISocket: "/var/run/dockershim.sock",
Name: "foo", Name: "foo",
}, },
pauseImage: "gcr.io/pause:3.1", pauseImage: "gcr.io/pause:3.1",
execer: cgroupfsCgroupExecer, execer: cgroupfsCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc, isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo", defaultHostname: "foo",
}, },
expected: map[string]string{ expected: map[string]string{
"network-plugin": "cni", "network-plugin": "cni",