From 39aeaac90e89b7564d19cd9f499e29d4039a712c Mon Sep 17 00:00:00 2001 From: Renaud Gaubert Date: Tue, 30 Apr 2019 10:41:13 -0700 Subject: [PATCH 1/2] Graduate KubeletPodResources to beta! Signed-off-by: Renaud Gaubert --- pkg/features/kube_features.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 65a44a03d0c..5bd862c54e5 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -395,6 +395,7 @@ const ( // owner: @dashpole // alpha: v1.13 + // beta: v1.15 // // Enables the kubelet's pod resources grpc endpoint KubeletPodResources featuregate.Feature = "KubeletPodResources" @@ -526,7 +527,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS VolumeSnapshotDataSource: {Default: false, PreRelease: featuregate.Alpha}, ProcMountType: {Default: false, PreRelease: featuregate.Alpha}, TTLAfterFinished: {Default: false, PreRelease: featuregate.Alpha}, - KubeletPodResources: {Default: false, PreRelease: featuregate.Alpha}, + KubeletPodResources: {Default: true, PreRelease: featuregate.Beta}, WindowsGMSA: {Default: false, PreRelease: featuregate.Alpha}, // inherited features from generic apiserver, relisted here to get a conflict if it is changed From a03d2d4d4e5109cdeae362a1540b3a80ea44985a Mon Sep 17 00:00:00 2001 From: Renaud Gaubert Date: Thu, 30 May 2019 09:23:00 -0700 Subject: [PATCH 2/2] Fix improper cleanup when creating a unix socket --- pkg/kubelet/util/util_unix.go | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/util/util_unix.go b/pkg/kubelet/util/util_unix.go index 46e8e2c5a88..05840582fdd 100644 --- a/pkg/kubelet/util/util_unix.go +++ b/pkg/kubelet/util/util_unix.go @@ -20,6 +20,7 @@ package util import ( "fmt" + "io/ioutil" "net" "net/url" "os" @@ -51,7 +52,30 @@ func CreateListener(endpoint string) (net.Listener, error) { return nil, fmt.Errorf("failed to unlink socket file %q: %v", addr, err) } - return net.Listen(protocol, addr) + if err := os.MkdirAll(filepath.Dir(addr), 0750); err != nil { + return nil, fmt.Errorf("error creating socket directory %q: %v", filepath.Dir(addr), err) + } + + // Create the socket on a tempfile and move it to the destination socket to handle improprer cleanup + file, err := ioutil.TempFile(filepath.Dir(addr), "") + if err != nil { + return nil, fmt.Errorf("failed to create temporary file: %v", err) + } + + if err := os.Remove(file.Name()); err != nil { + return nil, fmt.Errorf("failed to remove temporary file: %v", err) + } + + l, err := net.Listen(protocol, file.Name()) + if err != nil { + return nil, err + } + + if err = os.Rename(file.Name(), addr); err != nil { + return nil, fmt.Errorf("failed to move temporary file to addr %q: %v", addr, err) + } + + return l, nil } // GetAddressAndDialer returns the address parsed from the given endpoint and a dialer.