diff --git a/pkg/kubelet/cm/devicemanager/BUILD b/pkg/kubelet/cm/devicemanager/BUILD index c49b84eb825..c6a75f9bcdc 100644 --- a/pkg/kubelet/cm/devicemanager/BUILD +++ b/pkg/kubelet/cm/devicemanager/BUILD @@ -32,6 +32,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1:go_default_library", "//staging/src/k8s.io/kubelet/pkg/apis/pluginregistration/v1:go_default_library", diff --git a/pkg/kubelet/cm/devicemanager/device_plugin_stub.go b/pkg/kubelet/cm/devicemanager/device_plugin_stub.go index bf9e96a9c1b..b4c6be04ded 100644 --- a/pkg/kubelet/cm/devicemanager/device_plugin_stub.go +++ b/pkg/kubelet/cm/devicemanager/device_plugin_stub.go @@ -26,6 +26,7 @@ import ( "google.golang.org/grpc" + "k8s.io/apimachinery/pkg/util/wait" "k8s.io/klog/v2" pluginapi "k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1" watcherapi "k8s.io/kubelet/pkg/apis/pluginregistration/v1" @@ -123,11 +124,21 @@ func (m *Stub) Start() error { defer m.wg.Done() m.server.Serve(sock) }() - _, conn, err := dial(m.socket) - if err != nil { - return err + + var lastDialErr error + wait.PollImmediate(1*time.Second, 10*time.Second, func() (bool, error) { + var conn *grpc.ClientConn + _, conn, lastDialErr = dial(m.socket) + if lastDialErr != nil { + return false, nil + } + conn.Close() + return true, nil + }) + if lastDialErr != nil { + return lastDialErr } - conn.Close() + klog.Infof("Starting to serve on %v", m.socket) return nil