From fb5ee7397b9446bf508c71d219acf7d9cbb65497 Mon Sep 17 00:00:00 2001 From: Yifan Gu Date: Thu, 7 Jan 2016 10:40:45 -0800 Subject: [PATCH] e2e: Add support for getting kubelet logs from journald. If there is any successful detection of kubelet.service, fetch the kubelet logs using journalctl. --- test/e2e/core.go | 54 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/test/e2e/core.go b/test/e2e/core.go index 857bbf6e36..e0adc5754d 100644 --- a/test/e2e/core.go +++ b/test/e2e/core.go @@ -50,11 +50,16 @@ func CoreDump(dir string) { return } - cmds := []command{ - {"cat /var/log/kubelet.log", "kubelet"}, - {"cat /var/log/kube-proxy.log", "kube-proxy"}, - {"cat /var/log/supervisor/supervisord.log", "supervisord"}, + cmds := []command{{"cat /var/log/kube-proxy.log", "kube-proxy"}} + if isUsingSystemdKubelet(provider, hosts...) { + cmds = append(cmds, command{"sudo journalctl --output=cat -u kubelet.service", "kubelet"}) + } else { + cmds = append(cmds, []command{ + {"cat /var/log/kubelet.log", "kubelet"}, + {"cat /var/log/supervisor/supervisord.log", "supervisord"}, + }...) } + logCore(cmds, hosts, dir, provider) // I wish there was a better way to get the master IP... @@ -64,13 +69,21 @@ func CoreDump(dir string) { } ix := strings.LastIndex(config.Host, "/") master := net.JoinHostPort(config.Host[ix+1:], "22") + cmds = []command{ - {"cat /var/log/kubelet.log", "kubelet"}, {"cat /var/log/kube-apiserver.log", "kube-apiserver"}, {"cat /var/log/kube-scheduler.log", "kube-scheduler"}, {"cat /var/log/kube-controller-manager.log", "kube-controller-manager"}, - {"cat /var/log/supervisor/supervisord.log", "supervisord"}, } + if isUsingSystemdKubelet(provider, master) { + cmds = append(cmds, command{"sudo journalctl --output=cat -u kubelet.service", "kubelet"}) + } else { + cmds = append(cmds, []command{ + {"cat /var/log/kubelet.log", "kubelet"}, + {"cat /var/log/supervisor/supervisord.log", "supervisord"}, + }...) + } + logCore(cmds, []string{master}, dir, provider) } @@ -97,3 +110,32 @@ func logCore(cmds []command, hosts []string, dir, provider string) { } wg.Wait() } + +func isUsingSystemdKubelet(provider string, hosts ...string) bool { + wg := &sync.WaitGroup{} + results := make([]bool, len(hosts)) + cmd := "sudo systemctl status kubelet.service" + + wg.Add(len(hosts)) + for i := range hosts { + go func(i int) { + defer wg.Done() + result, err := SSH(cmd, hosts[i], provider) + if err != nil { + fmt.Printf("Error running command: %v\n", err) + return + } + if result.Code == 0 { + results[i] = true + } + }(i) + } + wg.Wait() + + for _, r := range results { + if r { + return true + } + } + return false +}