Skip to content

Commit daffd8a

Browse files
committed
Enable structured logging for core Kubernetes components
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
1 parent e96330f commit daffd8a

14 files changed

Lines changed: 47 additions & 13 deletions

File tree

cmd/containerd/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ import (
77

88
func main() {
99
klog.InitFlags(nil)
10+
klog.EnableContextualLogging(true)
1011
containerd.Main()
1112
}

pkg/certmonitor/certmonitor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func Setup(ctx context.Context, nodeConfig *daemonconfig.Node, dataDir string) e
5050
return err
5151
}
5252

53-
recorder := util.BuildControllerEventRecorder(client, controllerName, metav1.NamespaceDefault)
53+
recorder := util.BuildControllerEventRecorder(ctx, client, controllerName, metav1.NamespaceDefault)
5454

5555
// This is consistent with events attached to the node generated by the kubelet
5656
// https://github.com/kubernetes/kubernetes/blob/612130dd2f4188db839ea5c2dea07a96b0ad8d1c/pkg/kubelet/kubelet.go#L479-L485

pkg/cli/agent/agent.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ import (
2020
"github.com/k3s-io/k3s/pkg/signals"
2121
"github.com/k3s-io/k3s/pkg/spegel"
2222
"github.com/k3s-io/k3s/pkg/util"
23+
"github.com/k3s-io/k3s/pkg/util/logger"
2324
"github.com/k3s-io/k3s/pkg/util/permissions"
2425
"github.com/k3s-io/k3s/pkg/version"
2526
"github.com/k3s-io/k3s/pkg/vpn"
2627
pkgerrors "github.com/pkg/errors"
2728
"github.com/sirupsen/logrus"
2829
"github.com/urfave/cli/v2"
30+
"k8s.io/klog/v2"
2931
)
3032

3133
func Run(clx *cli.Context) (rerr error) {
@@ -47,7 +49,8 @@ func Run(clx *cli.Context) (rerr error) {
4749
return err
4850
}
4951

50-
ctx := signals.SetupSignalContext()
52+
klog.EnableContextualLogging(true)
53+
ctx := klog.NewContext(signals.SetupSignalContext(), logger.NewLogrusSink(nil).AsLogr())
5154
wg := &sync.WaitGroup{}
5255

5356
// If exiting due to an error, ensure that contexts are cancelled so that the

pkg/cli/server/server.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"time"
1313

1414
systemd "github.com/coreos/go-systemd/v22/daemon"
15+
"github.com/go-logr/logr"
1516
"github.com/gorilla/mux"
1617
"github.com/k3s-io/k3s/pkg/agent"
1718
"github.com/k3s-io/k3s/pkg/agent/https"
@@ -30,6 +31,7 @@ import (
3031
"github.com/k3s-io/k3s/pkg/signals"
3132
"github.com/k3s-io/k3s/pkg/spegel"
3233
"github.com/k3s-io/k3s/pkg/util"
34+
"github.com/k3s-io/k3s/pkg/util/logger"
3335
"github.com/k3s-io/k3s/pkg/util/permissions"
3436
"github.com/k3s-io/k3s/pkg/version"
3537
"github.com/k3s-io/k3s/pkg/vpn"
@@ -40,6 +42,7 @@ import (
4042
utilnet "k8s.io/apimachinery/pkg/util/net"
4143
"k8s.io/apimachinery/pkg/util/wait"
4244
kubeapiserverflag "k8s.io/component-base/cli/flag"
45+
"k8s.io/klog/v2"
4346
"k8s.io/kubernetes/pkg/controlplane/apiserver/options"
4447
utilsnet "k8s.io/utils/net"
4548
)
@@ -76,7 +79,8 @@ func run(app *cli.Context, cfg *cmds.Server, leaderControllers server.CustomCont
7679
return err
7780
}
7881

79-
ctx := signals.SetupSignalContext()
82+
klog.EnableContextualLogging(true)
83+
ctx := logr.NewContext(signals.SetupSignalContext(), logger.NewLogrusSink(nil).AsLogr())
8084
wg := &sync.WaitGroup{}
8185

8286
// If exiting due to an error, ensure that contexts are cancelled so that the

pkg/cloudprovider/cloudprovider.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func (k *k3s) Initialize(clientBuilder cloudprovider.ControllerClientBuilder, st
8888

8989
if k.LBEnabled {
9090
// Wrangler controller and caches are only needed if the load balancer controller is enabled.
91-
k.recorder = util.BuildControllerEventRecorder(k.client, controllerName, meta.NamespaceAll)
91+
k.recorder = util.BuildControllerEventRecorder(ctx, k.client, controllerName, meta.NamespaceAll)
9292
coreFactory := core.NewFactoryFromConfigOrDie(config)
9393
k.nodeCache = coreFactory.Core().V1().Node().Cache()
9494

pkg/deploy/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ type watcher struct {
8484

8585
// start calls listFiles at regular intervals to trigger application of manifests that have changed on disk.
8686
func (w *watcher) start(ctx context.Context, client kubernetes.Interface) {
87-
w.recorder = pkgutil.BuildControllerEventRecorder(client, ControllerName, metav1.NamespaceSystem)
87+
w.recorder = pkgutil.BuildControllerEventRecorder(ctx, client, ControllerName, metav1.NamespaceSystem)
8888
force := true
8989
for {
9090
if err := w.listFiles(force); err == nil {

pkg/executor/embed/embed.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/k3s-io/k3s/pkg/executor/embed/etcd"
2828
"github.com/k3s-io/k3s/pkg/signals"
2929
"github.com/k3s-io/k3s/pkg/util"
30+
"github.com/k3s-io/k3s/pkg/util/logger"
3031
"github.com/k3s-io/k3s/pkg/version"
3132
"github.com/k3s-io/k3s/pkg/vpn"
3233
pkgerrors "github.com/pkg/errors"
@@ -80,6 +81,7 @@ func (e *Embedded) Bootstrap(ctx context.Context, nodeConfig *daemonconfig.Node,
8081
defer cancel()
8182

8283
klog.InitFlags(nil)
84+
klog.EnableContextualLogging(true)
8385
for {
8486
flag.Set("v", strconv.Itoa(cmds.LogConfig.VLevel))
8587

@@ -170,7 +172,8 @@ func (e *Embedded) Bootstrap(ctx context.Context, nodeConfig *daemonconfig.Node,
170172
}
171173

172174
func (e *Embedded) Kubelet(ctx context.Context, args []string) error {
173-
command := kubelet.NewKubeletCommand(context.Background())
175+
ctx = logger.NewContextWithName(ctx, "kubelet")
176+
command := kubelet.NewKubeletCommand(logger.NewContextWithName(context.Background(), "kubelet"))
174177
command.SetArgs(args)
175178

176179
go func() {
@@ -191,6 +194,7 @@ func (e *Embedded) Kubelet(ctx context.Context, args []string) error {
191194
}
192195

193196
func (e *Embedded) KubeProxy(ctx context.Context, args []string) error {
197+
ctx = logger.NewContextWithName(ctx, "kube-proxy")
194198
command := proxy.NewProxyCommand()
195199
command.SetArgs(util.GetArgs(platformKubeProxyArgs(e.nodeConfig), args))
196200

@@ -217,6 +221,7 @@ func (*Embedded) APIServerHandlers(ctx context.Context) (authenticator.Request,
217221
}
218222

219223
func (e *Embedded) APIServer(ctx context.Context, args []string) error {
224+
ctx = logger.NewContextWithName(ctx, "kube-apiserver")
220225
command := apiapp.NewAPIServerCommand(ctx.Done())
221226
command.SetArgs(args)
222227

@@ -238,6 +243,7 @@ func (e *Embedded) APIServer(ctx context.Context, args []string) error {
238243
}
239244

240245
func (e *Embedded) Scheduler(ctx context.Context, nodeReady <-chan struct{}, args []string) error {
246+
ctx = logger.NewContextWithName(ctx, "kube-scheduler")
241247
command := sapp.NewSchedulerCommand(ctx.Done())
242248
command.SetArgs(args)
243249

@@ -260,6 +266,7 @@ func (e *Embedded) Scheduler(ctx context.Context, nodeReady <-chan struct{}, arg
260266
}
261267

262268
func (e *Embedded) ControllerManager(ctx context.Context, args []string) error {
269+
ctx = logger.NewContextWithName(ctx, "kube-controller-manager")
263270
command := cmapp.NewControllerManagerCommand()
264271
command.SetArgs(args)
265272

@@ -281,6 +288,7 @@ func (e *Embedded) ControllerManager(ctx context.Context, args []string) error {
281288
}
282289

283290
func (*Embedded) CloudControllerManager(ctx context.Context, ccmRBACReady <-chan struct{}, args []string) error {
291+
ctx = logger.NewContextWithName(ctx, "cloud-controller-manager")
284292
ccmOptions, err := ccmopt.NewCloudControllerManagerOptions()
285293
if err != nil {
286294
logrus.Fatalf("unable to initialize command options: %v", err)
@@ -330,6 +338,7 @@ func (e *Embedded) CurrentETCDOptions() (executor.InitialOptions, error) {
330338
}
331339

332340
func (e *Embedded) ETCD(ctx context.Context, wg *sync.WaitGroup, args *executor.ETCDConfig, extraArgs []string, test executor.TestFunc) error {
341+
ctx = logger.NewContextWithName(ctx, "etcd")
333342
// Start a goroutine to call the provided test function until it returns true.
334343
// The test function is reponsible for ensuring that the etcd server is up
335344
// and ready to accept client requests.
@@ -356,10 +365,12 @@ func (e *Embedded) ETCD(ctx context.Context, wg *sync.WaitGroup, args *executor.
356365
}
357366

358367
func (e *Embedded) Containerd(ctx context.Context, cfg *daemonconfig.Node) error {
368+
ctx = logger.NewContextWithName(ctx, "containerd")
359369
return executor.CloseIfNilErr(containerd.Run(ctx, cfg), e.criReady)
360370
}
361371

362372
func (e *Embedded) Docker(ctx context.Context, cfg *daemonconfig.Node) error {
373+
ctx = logger.NewContextWithName(ctx, "cri-dockerd")
363374
return executor.CloseIfNilErr(cridockerd.Run(ctx, cfg), e.criReady)
364375
}
365376

@@ -373,6 +384,7 @@ func (e *Embedded) CRI(ctx context.Context, cfg *daemonconfig.Node) error {
373384

374385
func (e *Embedded) CNI(ctx context.Context, wg *sync.WaitGroup, cfg *daemonconfig.Node) error {
375386
if cfg.Flannel.Backend != flannel.BackendNone {
387+
ctx := logger.NewContextWithName(ctx, "flannel")
376388
if (cfg.Flannel.ExternalIP) && (len(cfg.AgentConfig.NodeExternalIPs) == 0) {
377389
logrus.Warnf("Server has flannel-external-ip flag set but this node does not set node-external-ip. Flannel will use internal address when connecting to this node.")
378390
} else if (cfg.Flannel.ExternalIP) && (cfg.Flannel.Backend != flannel.BackendWireguardNative) {
@@ -388,6 +400,7 @@ func (e *Embedded) CNI(ctx context.Context, wg *sync.WaitGroup, cfg *daemonconfi
388400
}
389401

390402
if !cfg.AgentConfig.DisableNPC {
403+
ctx := logger.NewContextWithName(ctx, "kube-proxy")
391404
if err := netpol.Run(ctx, wg, cfg); err != nil {
392405
return err
393406
}

pkg/server/context.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
helmcrds "github.com/k3s-io/helm-controller/pkg/crds"
1111
"github.com/k3s-io/helm-controller/pkg/generated/controllers/helm.cattle.io"
1212
"github.com/k3s-io/k3s/pkg/util"
13+
"github.com/k3s-io/k3s/pkg/util/logger"
1314
"github.com/k3s-io/k3s/pkg/version"
1415
"github.com/rancher/wrangler/v3/pkg/crd"
1516
"github.com/rancher/wrangler/v3/pkg/generated/controllers/apps"
@@ -73,6 +74,7 @@ func NewContext(ctx context.Context, config *Config) (*Context, error) {
7374
hf = helm.NewFactoryFromConfigOrDie(restConfig)
7475
}
7576

77+
ctx = logger.NewContextWithName(ctx, version.Program+"-supervisor")
7678
c := &Context{
7779
K3s: k3s.NewFactoryFromConfigOrDie(restConfig),
7880
Auth: rbac.NewFactoryFromConfigOrDie(restConfig),
@@ -82,7 +84,7 @@ func NewContext(ctx context.Context, config *Config) (*Context, error) {
8284
Discovery: discovery.NewFactoryFromConfigOrDie(restConfig),
8385
Helm: hf,
8486

85-
Event: util.BuildControllerEventRecorder(k8s, version.Program+"-supervisor", metav1.NamespaceAll),
87+
Event: util.BuildControllerEventRecorder(ctx, k8s, version.Program+"-supervisor", metav1.NamespaceAll),
8688
K8s: k8s,
8789
Ext: ext,
8890
}

pkg/server/handlers/handlers_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1747,7 +1747,7 @@ func getMockedControl(t *testing.T) (*config.Control, context.CancelFunc) {
17471747
control.Runtime.K8s = k8s
17481748

17491749
// create event recorder
1750-
control.Runtime.Event = util.BuildControllerEventRecorder(control.Runtime.K8s, version.Program+"-supervisor", metav1.NamespaceAll)
1750+
control.Runtime.Event = util.BuildControllerEventRecorder(ctx, control.Runtime.K8s, version.Program+"-supervisor", metav1.NamespaceAll)
17511751

17521752
// start the node password controller
17531753
err = nodepassword.Register(ctx, control.Runtime.K8s, coreFactory.Core().V1().Secret(), coreFactory.Core().V1().Node())

pkg/server/handlers/secrets-encrypt.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ func updateSecrets(ctx context.Context, control *config.Control, nodeName string
447447
}
448448

449449
// For backwards compatibility with the old controller, we use an event recorder instead of logrus
450-
recorder := util.BuildControllerEventRecorder(k8s, "secrets-reencrypt", metav1.NamespaceDefault)
450+
recorder := util.BuildControllerEventRecorder(ctx, k8s, "secrets-reencrypt", metav1.NamespaceDefault)
451451

452452
secretPager := pager.New(pager.SimplePageFunc(func(opts metav1.ListOptions) (runtime.Object, error) {
453453
return k8s.CoreV1().Secrets(metav1.NamespaceAll).List(ctx, opts)

0 commit comments

Comments
 (0)