diff --git a/cluster/images/etcd/migrate/migrate_client.go b/cluster/images/etcd/migrate/migrate_client.go index cfb019f7cde..da106eb97cf 100644 --- a/cluster/images/etcd/migrate/migrate_client.go +++ b/cluster/images/etcd/migrate/migrate_client.go @@ -18,6 +18,7 @@ package main import ( "bytes" + "context" "fmt" "os" "os/exec" @@ -25,10 +26,9 @@ import ( "strings" "time" - "context" - clientv2 "github.com/coreos/etcd/client" "github.com/coreos/etcd/clientv3" + "google.golang.org/grpc" "k8s.io/klog" ) @@ -113,7 +113,13 @@ func (e *CombinedEtcdClient) clientV2() (clientv2.KeysAPI, error) { } func (e *CombinedEtcdClient) clientV3() (*clientv3.Client, error) { - return clientv3.New(clientv3.Config{Endpoints: []string{e.endpoint()}}) + return clientv3.New(clientv3.Config{ + Endpoints: []string{e.endpoint()}, + DialTimeout: 20 * time.Second, + DialOptions: []grpc.DialOption{ + grpc.WithBlock(), // block until the underlying connection is up + }, + }) } // Backup creates a backup of an etcd2 data directory at the given backupDir.