From ea9aa72984bddfbf29b3a4573c0eed483dc62c0f Mon Sep 17 00:00:00 2001 From: Thomas Stromberg Date: Wed, 25 Mar 2020 13:44:28 -0700 Subject: [PATCH] Retry addon application --- go.sum | 2 -- pkg/addons/addons.go | 17 +++++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/go.sum b/go.sum index d7d0bc3a61..15a7b48dae 100644 --- a/go.sum +++ b/go.sum @@ -421,8 +421,6 @@ github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= -github.com/johanneswuerbach/nfsexports v0.0.0-20181204082207-1aa528dcb345 h1:XP1VL9iOZu4yz/rq8zj+yvB23XEY5erXRzp8JYmkWu0= -github.com/johanneswuerbach/nfsexports v0.0.0-20181204082207-1aa528dcb345/go.mod h1:+c1/kUpg2zlkoWqTOvzDs36Wpbm3Gd1nlmtXAEB0WGU= github.com/johanneswuerbach/nfsexports v0.0.0-20200318065542-c48c3734757f h1:tL0xH80QVHQOde6Qqdohv6PewABH8l8N9pywZtuojJ0= github.com/johanneswuerbach/nfsexports v0.0.0-20200318065542-c48c3734757f/go.mod h1:+c1/kUpg2zlkoWqTOvzDs36Wpbm3Gd1nlmtXAEB0WGU= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= diff --git a/pkg/addons/addons.go b/pkg/addons/addons.go index d644aafc88..a3b1600a3d 100644 --- a/pkg/addons/addons.go +++ b/pkg/addons/addons.go @@ -34,6 +34,7 @@ import ( "k8s.io/minikube/pkg/minikube/machine" "k8s.io/minikube/pkg/minikube/out" "k8s.io/minikube/pkg/minikube/storageclass" + "k8s.io/minikube/pkg/util/retry" ) // defaultStorageClassProvisioner is the name of the default storage class provisioner @@ -211,13 +212,17 @@ func enableOrDisableAddonInternal(cc *config.ClusterConfig, addon *assets.Addon, } command := kubectlCommand(cc, deployFiles, enable) - glog.Infof("Running: %v", command) - rr, err := cmd.RunCmd(command) - if err != nil { - return errors.Wrapf(err, "addon apply") + + // Retry, because sometimes we race against an apiserver restart + apply := func() error { + _, err := cmd.RunCmd(command) + if err != nil { + glog.Warningf("apply failed, will retry: %v", err) + } + return err } - glog.Infof("output:\n%s", rr.Output()) - return nil + + return retry.Expo(apply, 1*time.Second, time.Second*30) } // enableOrDisableStorageClasses enables or disables storage classes