From f970e49b7d37f642150bcdcbbc4c7da63ea0eb8f Mon Sep 17 00:00:00 2001 From: Brad Davidson Date: Fri, 26 Feb 2021 10:37:27 -0800 Subject: [PATCH] Wait for apiserver to become healthy before starting agent controllers It is possible that the apiserver may serve read requests but not allow writes yet, in which case flannel will crash on startup when trying to configure the subnet manager. Fix this by waiting for the apiserver to become fully ready before starting flannel and the network policy controller. Signed-off-by: Brad Davidson --- pkg/agent/run.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/agent/run.go b/pkg/agent/run.go index cd7d428fbe..fb8613104b 100644 --- a/pkg/agent/run.go +++ b/pkg/agent/run.go @@ -35,6 +35,7 @@ import ( "k8s.io/client-go/kubernetes" v1 "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/tools/clientcmd" + "k8s.io/controller-manager/app" ) var ( @@ -98,6 +99,9 @@ func run(ctx context.Context, cfg cmds.Agent, proxy proxy.Proxy) error { if err != nil { return err } + + app.WaitForAPIServer(coreClient, 30*time.Second) + if !nodeConfig.NoFlannel { if err := flannel.Run(ctx, nodeConfig, coreClient.CoreV1().Nodes()); err != nil { return err