From 8b6160a3679bd5c040d05b3e9d05a4a446f8d291 Mon Sep 17 00:00:00 2001 From: Odin Ugedal Date: Fri, 16 Aug 2019 15:06:31 +0200 Subject: [PATCH] Add support for stopping kubelet in node-e2e This makes it possible to stop the kubelet, do some work, and then start it again. --- test/e2e_node/util.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/test/e2e_node/util.go b/test/e2e_node/util.go index 01efa7e1eda..cd663be42eb 100644 --- a/test/e2e_node/util.go +++ b/test/e2e_node/util.go @@ -373,18 +373,34 @@ func getCRIClient() (internalapi.RuntimeService, internalapi.ImageManagerService } // TODO: Find a uniform way to deal with systemctl/initctl/service operations. #34494 -func restartKubelet() { +func findRunningKubletServiceName() string { stdout, err := exec.Command("sudo", "systemctl", "list-units", "kubelet*", "--state=running").CombinedOutput() framework.ExpectNoError(err) regex := regexp.MustCompile("(kubelet-\\w+)") matches := regex.FindStringSubmatch(string(stdout)) framework.ExpectNotEqual(len(matches), 0) - kube := matches[0] - framework.Logf("Get running kubelet with systemctl: %v, %v", string(stdout), kube) - stdout, err = exec.Command("sudo", "systemctl", "restart", kube).CombinedOutput() + kubeletServiceName := matches[0] + framework.Logf("Get running kubelet with systemctl: %v, %v", string(stdout), kubeletServiceName) + return kubeletServiceName +} + +func restartKubelet() { + kubeletServiceName := findRunningKubletServiceName() + stdout, err := exec.Command("sudo", "systemctl", "restart", kubeletServiceName).CombinedOutput() framework.ExpectNoError(err, "Failed to restart kubelet with systemctl: %v, %v", err, stdout) } +// stopKubelet will kill the running kubelet, and returns a func that will restart the process again +func stopKubelet() func() { + kubeletServiceName := findRunningKubletServiceName() + stdout, err := exec.Command("sudo", "systemctl", "kill", kubeletServiceName).CombinedOutput() + framework.ExpectNoError(err, "Failed to stop kubelet with systemctl: %v, %v", err, stdout) + return func() { + stdout, err := exec.Command("sudo", "systemctl", "start", kubeletServiceName).CombinedOutput() + framework.ExpectNoError(err, "Failed to restart kubelet with systemctl: %v, %v", err, stdout) + } +} + func toCgroupFsName(cgroupName cm.CgroupName) string { if framework.TestContext.KubeletConfig.CgroupDriver == "systemd" { return cgroupName.ToSystemd()