From ca2d5178aa60ad20f230fa545f0fa156f5d37bd6 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Tue, 15 Aug 2017 16:40:21 -0400 Subject: [PATCH] Create the directory for cadvisor if needed In 6c7245d464250278882b59d68a97b0170201d35d, code was added to bail out if the directory that cadvisor monitored did not exist. However, this breaks the earlier assumption that kubelet created directories when needed in pkg/kubelet/kubelet.go's setupDataDirs() method. setupDataDirs() happens much later, so basically kubelet exits now. So since cadvisor really needs this directory, let us just create it Fixes #50709 --- pkg/kubelet/cadvisor/cadvisor_linux.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/cadvisor/cadvisor_linux.go b/pkg/kubelet/cadvisor/cadvisor_linux.go index 77135b2871b..5734540ccce 100644 --- a/pkg/kubelet/cadvisor/cadvisor_linux.go +++ b/pkg/kubelet/cadvisor/cadvisor_linux.go @@ -24,6 +24,7 @@ import ( "net" "net/http" "os" + "path" "strconv" "time" @@ -108,7 +109,9 @@ func New(address string, port uint, runtime string, rootPath string) (Interface, if _, err := os.Stat(rootPath); err != nil { if os.IsNotExist(err) { - return nil, fmt.Errorf("rootDirectory %q does not exist", rootPath) + if err := os.MkdirAll(path.Clean(rootPath), 0750); err != nil { + return nil, fmt.Errorf("error creating root directory %q: %v", rootPath, err) + } } else { return nil, fmt.Errorf("failed to Stat %q: %v", rootPath, err) }