From 107b5f3985aea2560eb8d2875923b2d863b116d6 Mon Sep 17 00:00:00 2001 From: Erik Wilson Date: Wed, 6 Mar 2019 20:49:17 -0700 Subject: [PATCH] Enable systemd ready notification for k3s server Disables k8s generic api server systemd ready notification and send our own ready notification after server available and kubeconfig available. Make sure we unset the NOTIFY_SOCKET environment variable by passing `true` to SdNotify so the agent can start containers. --- pkg/cli/server/server.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/cli/server/server.go b/pkg/cli/server/server.go index 721f124c76..c3db74166f 100644 --- a/pkg/cli/server/server.go +++ b/pkg/cli/server/server.go @@ -9,6 +9,7 @@ import ( "path/filepath" "strings" + systemd "github.com/coreos/go-systemd/daemon" "github.com/docker/docker/pkg/reexec" "github.com/natefinch/lumberjack" "github.com/pkg/errors" @@ -99,6 +100,9 @@ func run(app *cli.Context, cfg *cmds.Server) error { } logrus.Info("Starting k3s ", app.App.Version) + notifySocket := os.Getenv("NOTIFY_SOCKET") + os.Unsetenv("NOTIFY_SOCKET") + ctx := signal.SigTermCancelContext(context.Background()) certs, err := server.StartServer(ctx, &serverConfig) if err != nil { @@ -106,6 +110,10 @@ func run(app *cli.Context, cfg *cmds.Server) error { } logrus.Info("k3s is up and running") + if notifySocket != "" { + os.Setenv("NOTIFY_SOCKET", notifySocket) + systemd.SdNotify(true, "READY=1") + } if cfg.DisableAgent { <-ctx.Done()