From 0a86ca406151fd51ca143dbfa41f1c63d00a4082 Mon Sep 17 00:00:00 2001 From: zhangzhifei16 Date: Tue, 10 Jun 2025 21:11:55 +0800 Subject: [PATCH] Add healthChecker to the kubeDeps --- cmd/kubelet/app/server.go | 19 +++++++------------ pkg/kubelet/kubelet.go | 4 ++-- pkg/kubelet/kubelet_test.go | 1 - pkg/kubemark/hollow_kubelet.go | 2 +- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index 811a9aa2a68..b08281e58e6 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -604,14 +604,14 @@ func getReservedCPUs(machineInfo *cadvisorapi.MachineInfo, cpus string) (cpuset. } func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Dependencies, featureGate featuregate.FeatureGate) (err error) { - var healthChecker watchdog.HealthChecker if utilfeature.DefaultFeatureGate.Enabled(features.SystemdWatchdog) { // NewHealthChecker returns an error indicating that the watchdog is configured but the configuration is incorrect, // the kubelet will not be started. - healthChecker, err = watchdog.NewHealthChecker() + healthChecker, err := watchdog.NewHealthChecker() if err != nil { return fmt.Errorf("create health checker: %w", err) } + kubeDeps.HealthChecker = healthChecker healthChecker.Start(ctx) } @@ -903,7 +903,7 @@ func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Depend klog.InfoS("Failed to ApplyOOMScoreAdj", "err", err) } - if err := RunKubelet(ctx, s, kubeDeps, healthChecker); err != nil { + if err := RunKubelet(ctx, s, kubeDeps); err != nil { return err } @@ -1208,7 +1208,7 @@ func setContentTypeForClient(cfg *restclient.Config, contentType string) { // 3 Standalone 'kubernetes' binary // // Eventually, #2 will be replaced with instances of #3 -func RunKubelet(ctx context.Context, kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencies, healthChecker watchdog.HealthChecker) error { +func RunKubelet(ctx context.Context, kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencies) error { hostname, err := nodeutil.GetHostname(kubeServer.HostnameOverride) if err != nil { return err @@ -1240,9 +1240,7 @@ func RunKubelet(ctx context.Context, kubeServer *options.KubeletServer, kubeDeps kubeDeps, hostname, nodeName, - nodeIPs, - healthChecker, - ) + nodeIPs) if err != nil { return fmt.Errorf("failed to create kubelet: %w", err) } @@ -1282,9 +1280,7 @@ func createAndInitKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencies, hostname string, nodeName types.NodeName, - nodeIPs []net.IP, - healthChecker watchdog.HealthChecker, -) (k kubelet.Bootstrap, err error) { + nodeIPs []net.IP) (k kubelet.Bootstrap, err error) { // TODO: block until all sources have delivered at least one update to the channel, or break the sync loop // up into "per source" synchronizations @@ -1313,8 +1309,7 @@ func createAndInitKubelet(kubeServer *options.KubeletServer, kubeServer.RegisterSchedulable, kubeServer.NodeLabels, kubeServer.NodeStatusMaxImages, - kubeServer.KubeletFlags.SeccompDefault || kubeServer.KubeletConfiguration.SeccompDefault, - healthChecker) + kubeServer.KubeletFlags.SeccompDefault || kubeServer.KubeletConfiguration.SeccompDefault) if err != nil { return nil, err } diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index c656e4390cc..9ed0faf861b 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -321,6 +321,7 @@ type Dependencies struct { RemoteImageService internalapi.ImageManagerService PodStartupLatencyTracker util.PodStartupLatencyTracker NodeStartupLatencyTracker util.NodeStartupLatencyTracker + HealthChecker watchdog.HealthChecker // remove it after cadvisor.UsingLegacyCadvisorStats dropped. useLegacyCadvisorStats bool } @@ -437,7 +438,6 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, nodeLabels map[string]string, nodeStatusMaxImages int32, seccompDefault bool, - healthChecker watchdog.HealthChecker, ) (*Kubelet, error) { ctx := context.Background() logger := klog.TODO() @@ -640,7 +640,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, nodeStatusMaxImages: nodeStatusMaxImages, tracer: tracer, nodeStartupLatencyTracker: kubeDeps.NodeStartupLatencyTracker, - healthChecker: healthChecker, + healthChecker: kubeDeps.HealthChecker, flagz: kubeDeps.Flagz, } diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index f3055960dce..3e7cacdaf00 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -3622,7 +3622,6 @@ func TestNewMainKubeletStandAlone(t *testing.T) { map[string]string{}, 1024, false, - nil, ) assert.NoError(t, err, "NewMainKubelet should succeed") assert.NotNil(t, testMainKubelet, "testMainKubelet should not be nil") diff --git a/pkg/kubemark/hollow_kubelet.go b/pkg/kubemark/hollow_kubelet.go index b5501f9641b..661ac5440ad 100644 --- a/pkg/kubemark/hollow_kubelet.go +++ b/pkg/kubemark/hollow_kubelet.go @@ -126,7 +126,7 @@ func (hk *HollowKubelet) Run(ctx context.Context) { if err := kubeletapp.RunKubelet(ctx, &options.KubeletServer{ KubeletFlags: *hk.KubeletFlags, KubeletConfiguration: *hk.KubeletConfiguration, - }, hk.KubeletDeps, nil); err != nil { + }, hk.KubeletDeps); err != nil { klog.Fatalf("Failed to run HollowKubelet: %v. Exiting.", err) } select {}