From c5f66bfe70b4d1fed17b056db04c652585df07e0 Mon Sep 17 00:00:00 2001 From: Henry Wu Date: Tue, 26 Nov 2024 23:51:44 +0000 Subject: [PATCH] Add statusz endpoint for kube-proxy --- cmd/kube-proxy/app/server.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/cmd/kube-proxy/app/server.go b/cmd/kube-proxy/app/server.go index 87d5c9d0ac1..789a7a7cb09 100644 --- a/cmd/kube-proxy/app/server.go +++ b/cmd/kube-proxy/app/server.go @@ -60,7 +60,9 @@ import ( "k8s.io/component-base/metrics/prometheus/slis" "k8s.io/component-base/version" "k8s.io/component-base/version/verflag" + zpagesfeatures "k8s.io/component-base/zpages/features" "k8s.io/component-base/zpages/flagz" + "k8s.io/component-base/zpages/statusz" nodeutil "k8s.io/component-helpers/node/util" "k8s.io/klog/v2" api "k8s.io/kubernetes/pkg/apis/core" @@ -78,6 +80,11 @@ import ( netutils "k8s.io/utils/net" ) +const ( + // kubeProxy defines variable used internally when referring to kube-proxy component + kubeProxy = "kube-proxy" +) + func init() { utilruntime.Must(metricsfeatures.AddFeatureGates(utilfeature.DefaultMutableFeatureGate)) utilruntime.Must(logsapi.AddFeatureGates(utilfeature.DefaultMutableFeatureGate)) @@ -93,7 +100,7 @@ func NewProxyCommand() *cobra.Command { opts := NewOptions() cmd := &cobra.Command{ - Use: "kube-proxy", + Use: kubeProxy, Long: `The Kubernetes network proxy runs on each node. This reflects services as defined in the Kubernetes API on each node and can do simple TCP, UDP, and SCTP stream forwarding or round robin TCP, UDP, and SCTP forwarding across a set of backends. @@ -214,7 +221,7 @@ func newProxyServer(ctx context.Context, config *kubeproxyconfig.KubeProxyConfig } s.Broadcaster = events.NewBroadcaster(&events.EventSinkImpl{Interface: s.Client.EventsV1()}) - s.Recorder = s.Broadcaster.NewRecorder(proxyconfigscheme.Scheme, "kube-proxy") + s.Recorder = s.Broadcaster.NewRecorder(proxyconfigscheme.Scheme, kubeProxy) s.NodeRef = &v1.ObjectReference{ Kind: "Node", @@ -443,7 +450,7 @@ func serveMetrics(ctx context.Context, bindAddress string, proxyMode kubeproxyco return } - proxyMux := mux.NewPathRecorderMux("kube-proxy") + proxyMux := mux.NewPathRecorderMux(kubeProxy) healthz.InstallHandler(proxyMux) slis.SLIMetricsWithReset{}.Install(proxyMux) @@ -466,6 +473,10 @@ func serveMetrics(ctx context.Context, bindAddress string, proxyMode kubeproxyco flagz.Install(proxyMux, "kube-proxy", flagzReader) } + if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentStatusz) { + statusz.Install(proxyMux, kubeProxy, statusz.NewRegistry()) + } + fn := func() { var err error defer func() {