Skip to content

Commit 9bee0b9

Browse files
committed
Implement "k0s status" on Windows
Fixes #2887 Uses pipe based transport on Windows to listen and query the status service. Signed-off-by: Kimmo Lehto <[email protected]>
1 parent a64156e commit 9bee0b9

File tree

18 files changed

+156
-48
lines changed

18 files changed

+156
-48
lines changed

cmd/root.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/k0sproject/k0s/cmd/kubeconfig"
1616
"github.com/k0sproject/k0s/cmd/kubectl"
1717
"github.com/k0sproject/k0s/cmd/start"
18+
"github.com/k0sproject/k0s/cmd/status"
1819
"github.com/k0sproject/k0s/cmd/stop"
1920
"github.com/k0sproject/k0s/cmd/sysinfo"
2021
"github.com/k0sproject/k0s/cmd/token"
@@ -46,6 +47,7 @@ func NewRootCmd() *cobra.Command {
4647
cmd.AddCommand(kubectl.NewK0sKubectlCmd())
4748
cmd.AddCommand(start.NewStartCmd())
4849
cmd.AddCommand(stop.NewStopCmd())
50+
cmd.AddCommand(status.NewStatusCmd())
4951
cmd.AddCommand(sysinfo.NewSysinfoCmd())
5052
cmd.AddCommand(token.NewTokenCmd())
5153
cmd.AddCommand(validate.NewValidateCmd()) // hidden+deprecated

cmd/root_linux.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"github.com/k0sproject/k0s/cmd/keepalived"
1010
"github.com/k0sproject/k0s/cmd/reset"
1111
"github.com/k0sproject/k0s/cmd/restore"
12-
"github.com/k0sproject/k0s/cmd/status"
1312

1413
"github.com/spf13/cobra"
1514
)
@@ -20,5 +19,4 @@ func addPlatformSpecificCommands(root *cobra.Command) {
2019
root.AddCommand(keepalived.NewKeepalivedSetStateCmd()) // hidden
2120
root.AddCommand(reset.NewResetCmd())
2221
root.AddCommand(restore.NewRestoreCmd())
23-
root.AddCommand(status.NewStatusCmd())
2422
}

cmd/status/status.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
//go:build unix
2-
31
// SPDX-FileCopyrightText: 2021 k0s authors
42
// SPDX-License-Identifier: Apache-2.0
53

cmd/worker/worker_windows.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ import (
1212

1313
"github.com/k0sproject/k0s/internal/pkg/dir"
1414
"github.com/k0sproject/k0s/internal/pkg/log"
15+
"github.com/k0sproject/k0s/pkg/build"
1516
"github.com/k0sproject/k0s/pkg/component/manager"
17+
"github.com/k0sproject/k0s/pkg/component/prober"
18+
"github.com/k0sproject/k0s/pkg/component/status"
1619
"github.com/k0sproject/k0s/pkg/component/worker"
1720
"github.com/k0sproject/k0s/pkg/config"
1821
"github.com/k0sproject/k0s/pkg/constant"
@@ -45,6 +48,23 @@ func initLogging(ctx context.Context, logDir string) error {
4548
return nil
4649
}
4750

48-
func addPlatformSpecificComponents(context.Context, *manager.Manager, *config.CfgVars, EmbeddingController, *worker.CertificateManager) {
49-
// no-op
51+
func addPlatformSpecificComponents(ctx context.Context, m *manager.Manager, k0sVars *config.CfgVars, controller EmbeddingController, certManager *worker.CertificateManager) {
52+
if controller != nil {
53+
return
54+
}
55+
56+
m.Add(ctx, &status.Status{
57+
Prober: prober.DefaultProber,
58+
StatusInformation: status.K0sStatus{
59+
Pid: os.Getpid(),
60+
Role: "worker",
61+
Args: os.Args,
62+
Version: build.Version,
63+
Workloads: true,
64+
SingleNode: false,
65+
K0sVars: k0sVars,
66+
},
67+
CertManager: certManager,
68+
Socket: k0sVars.StatusSocketPath,
69+
})
5070
}

pkg/autopilot/controller/setup.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,6 @@ func (sc *setupController) createControlNode(ctx context.Context, cf apcli.Facto
178178
return nil
179179
}
180180

181-
// TODO re-use from somewhere else
182-
const DefaultK0sStatusSocketPath = "/run/k0s/status.sock"
183-
184181
func getControlNodeAddresses(hostname string) ([]corev1.NodeAddress, error) {
185182
addresses := []corev1.NodeAddress{}
186183
apiAddress, err := getControllerAPIAddress()
@@ -201,7 +198,7 @@ func getControlNodeAddresses(hostname string) ([]corev1.NodeAddress, error) {
201198
}
202199

203200
func getControllerAPIAddress() (string, error) {
204-
status, err := status.GetStatusInfo(DefaultK0sStatusSocketPath)
201+
status, err := status.GetStatusInfo(status.DefaultSocketPath)
205202
if err != nil {
206203
return "", err
207204
}

pkg/autopilot/controller/signal/k0s/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func RegisterControllers(ctx context.Context, logger *logrus.Entry, mgr crman.Ma
3939
logger.Infof("Using effective hostname = '%v'", hostname)
4040

4141
k0sVersionHandler := func() (string, error) {
42-
return getK0sVersion(DefaultK0sStatusSocketPath)
42+
return getK0sVersion(status.DefaultSocketPath)
4343
}
4444

4545
if err := registerSignalController(logger, mgr, signalControllerEventFilter(hostname, apsigpred.DefaultErrorHandler(logger, "k0s signal")), delegate, clusterID, k0sVersionHandler); err != nil {

pkg/autopilot/controller/signal/k0s/restart_unix.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (r *restart) Reconcile(ctx context.Context, req cr.Request) (cr.Result, err
9393

9494
// Get the current version of k0s
9595
logger.Info("Determining the current version of k0s")
96-
k0sVersion, err := getK0sVersion(DefaultK0sStatusSocketPath)
96+
k0sVersion, err := getK0sVersion(status.DefaultSocketPath)
9797
if err != nil {
9898
logger.Info("Unable to determine current verion of k0s; requeuing")
9999
return cr.Result{}, fmt.Errorf("unable to get k0s version: %w", err)
@@ -128,7 +128,7 @@ func (r *restart) Reconcile(ctx context.Context, req cr.Request) (cr.Result, err
128128

129129
logger.Info("Preparing to restart k0s")
130130

131-
k0sPid, err := getK0sPid(DefaultK0sStatusSocketPath)
131+
k0sPid, err := getK0sPid(status.DefaultSocketPath)
132132
if err != nil {
133133
logger.Info("Unable to determine current k0s pid; requeuing")
134134
return cr.Result{RequeueAfter: restartRequeueDuration}, fmt.Errorf("unable to get k0s pid: %w", err)

pkg/autopilot/controller/signal/k0s/restarted_unix.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
apdel "github.com/k0sproject/k0s/pkg/autopilot/controller/delegate"
1515
apsigpred "github.com/k0sproject/k0s/pkg/autopilot/controller/signal/common/predicate"
1616
apsigv2 "github.com/k0sproject/k0s/pkg/autopilot/signaling/v2"
17+
"github.com/k0sproject/k0s/pkg/component/status"
1718

1819
"github.com/sirupsen/logrus"
1920
cr "sigs.k8s.io/controller-runtime"
@@ -86,7 +87,7 @@ func (r *restarted) Reconcile(ctx context.Context, req cr.Request) (cr.Result, e
8687

8788
// Get the current version of k0s
8889
logger.Info("Determining the current version of k0s")
89-
k0sVersion, err := getK0sVersion(DefaultK0sStatusSocketPath)
90+
k0sVersion, err := getK0sVersion(status.DefaultSocketPath)
9091
if err != nil {
9192
logger.Info("Unable to determine current verion of k0s; requeuing")
9293
return cr.Result{}, fmt.Errorf("unable to get k0s version: %w", err)

pkg/autopilot/controller/signal/k0s/signal.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727

2828
const (
2929
SignalResponseProcessingTimeout = 1 * time.Minute
30-
DefaultK0sStatusSocketPath = "/run/k0s/status.sock"
3130
)
3231

3332
type k0sVersionHandlerFunc func() (string, error)

pkg/autopilot/controller/updates/updater.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
apv1beta2 "github.com/k0sproject/k0s/pkg/apis/autopilot/v1beta2"
2121
apcli "github.com/k0sproject/k0s/pkg/autopilot/client"
2222
appc "github.com/k0sproject/k0s/pkg/autopilot/controller/plans/core"
23-
"github.com/k0sproject/k0s/pkg/autopilot/controller/signal/k0s"
2423
uc "github.com/k0sproject/k0s/pkg/autopilot/updater"
2524
"github.com/k0sproject/k0s/pkg/build"
2625
"github.com/k0sproject/k0s/pkg/component/status"
@@ -77,7 +76,7 @@ func newCronUpdater(parentCtx context.Context, updateConfig apv1beta2.UpdateConf
7776
schedule = defaultCronSchedule
7877
}
7978

80-
status, err := status.GetStatusInfo(k0s.DefaultK0sStatusSocketPath)
79+
status, err := status.GetStatusInfo(status.DefaultSocketPath)
8180
if err != nil {
8281
return nil, err
8382
}

0 commit comments

Comments
 (0)