Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kubeadm: remove dependency on pkg/util/procfs #80296

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 0 additions & 1 deletion cmd/kubeadm/.import-restrictions
Expand Up @@ -83,7 +83,6 @@
"k8s.io/kubernetes/pkg/util/ipvs",
"k8s.io/kubernetes/pkg/util/metrics",
"k8s.io/kubernetes/pkg/util/parsers",
"k8s.io/kubernetes/pkg/util/procfs",
"k8s.io/kubernetes/pkg/util/sysctl",
"k8s.io/kubernetes/pkg/util/taints"
],
Expand Down
1 change: 0 additions & 1 deletion cmd/kubeadm/app/phases/kubelet/BUILD
Expand Up @@ -19,7 +19,6 @@ go_library(
"//cmd/kubeadm/app/util/apiclient:go_default_library",
"//cmd/kubeadm/app/util/initsystem: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/rbac/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
Expand Down
21 changes: 15 additions & 6 deletions cmd/kubeadm/app/phases/kubelet/flags.go
Expand Up @@ -29,7 +29,7 @@ import (
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/images"
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"
)

Expand All @@ -39,7 +39,7 @@ type kubeletFlagsOpts struct {
pauseImage string
registerTaintsUsingFlags bool
execer utilsexec.Interface
pidOfFunc func(string) ([]int, error)
isServiceActiveFunc func(string) (bool, error)
defaultHostname string
}

Expand All @@ -57,8 +57,14 @@ func WriteKubeletDynamicEnvFile(cfg *kubeadmapi.ClusterConfiguration, nodeReg *k
pauseImage: images.GetPauseImage(cfg),
registerTaintsUsingFlags: registerTaintsUsingFlags,
execer: utilsexec.New(),
pidOfFunc: procfs.PidOf,
defaultHostname: hostName,
isServiceActiveFunc: func(name string) (bool, error) {
initSystem, err := initsystem.GetInitSystem()
if err != nil {
return false, err
}
return initSystem.ServiceIsActive(name), nil
},
defaultHostname: hostName,
}
stringMap := buildKubeletArgMap(flagOpts)
argList := kubeadmutil.BuildArgumentListFromMap(stringMap, nodeReg.KubeletExtraArgs)
Expand Down Expand Up @@ -98,8 +104,11 @@ func buildKubeletArgMap(opts kubeletFlagsOpts) map[string]string {
kubeletFlags["register-with-taints"] = strings.Join(taintStrs, ",")
}

if pids, _ := opts.pidOfFunc("systemd-resolved"); len(pids) > 0 {
// procfs.PidOf only returns an error if the regex is empty or doesn't compile, so we can ignore it
ok, err := opts.isServiceActiveFunc("systemd-resolved")
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"
}

Expand Down
56 changes: 28 additions & 28 deletions cmd/kubeadm/app/phases/kubelet/flags_test.go
Expand Up @@ -25,7 +25,7 @@ import (

"github.com/pkg/errors"

"k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
"k8s.io/utils/exec"
)
Expand Down Expand Up @@ -89,12 +89,12 @@ var (
}
)

func binaryRunningPidOfFunc(_ string) ([]int, error) {
return []int{1, 2, 3}, nil
func serviceIsActiveFunc(_ string) (bool, error) {
return true, nil
}

func binaryNotRunningPidOfFunc(_ string) ([]int, error) {
return []int{}, nil
func serviceIsNotActiveFunc(_ string) (bool, error) {
return false, nil
}

func TestBuildKubeletArgMap(t *testing.T) {
Expand All @@ -118,9 +118,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
},
},
},
execer: errCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc,
defaultHostname: "foo",
execer: errCgroupExecer,
isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo",
},
expected: map[string]string{
"network-plugin": "cni",
Expand All @@ -133,9 +133,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/dockershim.sock",
Name: "override-name",
},
execer: errCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc,
defaultHostname: "default",
execer: errCgroupExecer,
isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "default",
},
expected: map[string]string{
"network-plugin": "cni",
Expand All @@ -149,9 +149,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/dockershim.sock",
Name: "foo",
},
execer: systemdCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc,
defaultHostname: "foo",
execer: systemdCgroupExecer,
isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo",
},
expected: map[string]string{
"network-plugin": "cni",
Expand All @@ -165,9 +165,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/dockershim.sock",
Name: "foo",
},
execer: cgroupfsCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc,
defaultHostname: "foo",
execer: cgroupfsCgroupExecer,
isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo",
},
expected: map[string]string{
"network-plugin": "cni",
Expand All @@ -181,9 +181,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/containerd.sock",
Name: "foo",
},
execer: cgroupfsCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc,
defaultHostname: "foo",
execer: cgroupfsCgroupExecer,
isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo",
},
expected: map[string]string{
"container-runtime": "remote",
Expand Down Expand Up @@ -211,7 +211,7 @@ func TestBuildKubeletArgMap(t *testing.T) {
},
registerTaintsUsingFlags: true,
execer: cgroupfsCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc,
isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo",
},
expected: map[string]string{
Expand All @@ -227,9 +227,9 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/containerd.sock",
Name: "foo",
},
execer: cgroupfsCgroupExecer,
pidOfFunc: binaryRunningPidOfFunc,
defaultHostname: "foo",
execer: cgroupfsCgroupExecer,
isServiceActiveFunc: serviceIsActiveFunc,
defaultHostname: "foo",
},
expected: map[string]string{
"container-runtime": "remote",
Expand All @@ -244,10 +244,10 @@ func TestBuildKubeletArgMap(t *testing.T) {
CRISocket: "/var/run/dockershim.sock",
Name: "foo",
},
pauseImage: "gcr.io/pause:3.1",
execer: cgroupfsCgroupExecer,
pidOfFunc: binaryNotRunningPidOfFunc,
defaultHostname: "foo",
pauseImage: "gcr.io/pause:3.1",
execer: cgroupfsCgroupExecer,
isServiceActiveFunc: serviceIsNotActiveFunc,
defaultHostname: "foo",
},
expected: map[string]string{
"network-plugin": "cni",
Expand Down