@@ -69,6 +69,7 @@ import (
69
69
"k8s.io/component-base/metrics/legacyregistry"
70
70
"k8s.io/component-base/metrics/prometheus/slis"
71
71
zpagesfeatures "k8s.io/component-base/zpages/features"
72
+ "k8s.io/component-base/zpages/flagz"
72
73
"k8s.io/component-base/zpages/statusz"
73
74
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
74
75
"k8s.io/cri-client/pkg/util"
@@ -117,6 +118,7 @@ const (
117
118
118
119
// Server is a http.Handler which exposes kubelet functionality over HTTP.
119
120
type Server struct {
121
+ flagz flagz.Reader
120
122
auth AuthInterface
121
123
host HostInterface
122
124
restfulCont containerInterface
@@ -167,6 +169,7 @@ func ListenAndServeKubeletServer(
167
169
host HostInterface ,
168
170
resourceAnalyzer stats.ResourceAnalyzer ,
169
171
checkers []healthz.HealthChecker ,
172
+ flagz flagz.Reader ,
170
173
kubeCfg * kubeletconfiginternal.KubeletConfiguration ,
171
174
tlsOptions * TLSOptions ,
172
175
auth AuthInterface ,
@@ -175,7 +178,7 @@ func ListenAndServeKubeletServer(
175
178
address := netutils .ParseIPSloppy (kubeCfg .Address )
176
179
port := uint (kubeCfg .Port )
177
180
klog .InfoS ("Starting to listen" , "address" , address , "port" , port )
178
- handler := NewServer (host , resourceAnalyzer , checkers , auth , kubeCfg )
181
+ handler := NewServer (host , resourceAnalyzer , checkers , flagz , auth , kubeCfg )
179
182
180
183
if utilfeature .DefaultFeatureGate .Enabled (features .KubeletTracing ) {
181
184
handler .InstallTracingFilter (tp )
@@ -210,11 +213,12 @@ func ListenAndServeKubeletReadOnlyServer(
210
213
host HostInterface ,
211
214
resourceAnalyzer stats.ResourceAnalyzer ,
212
215
checkers []healthz.HealthChecker ,
216
+ flagz flagz.Reader ,
213
217
address net.IP ,
214
218
port uint ,
215
219
tp oteltrace.TracerProvider ) {
216
220
klog .InfoS ("Starting to listen read-only" , "address" , address , "port" , port )
217
- s := NewServer (host , resourceAnalyzer , checkers , nil , nil )
221
+ s := NewServer (host , resourceAnalyzer , checkers , nil , nil , nil )
218
222
219
223
if utilfeature .DefaultFeatureGate .Enabled (features .KubeletTracing ) {
220
224
s .InstallTracingFilter (tp , otelrestful .WithPublicEndpoint ())
@@ -291,10 +295,12 @@ func NewServer(
291
295
host HostInterface ,
292
296
resourceAnalyzer stats.ResourceAnalyzer ,
293
297
checkers []healthz.HealthChecker ,
298
+ flagz flagz.Reader ,
294
299
auth AuthInterface ,
295
300
kubeCfg * kubeletconfiginternal.KubeletConfiguration ) Server {
296
301
297
302
server := Server {
303
+ flagz : flagz ,
298
304
host : host ,
299
305
resourceAnalyzer : resourceAnalyzer ,
300
306
auth : auth ,
@@ -575,6 +581,13 @@ func (s *Server) InstallAuthRequiredHandlers() {
575
581
statusz .Install (s .restfulCont , ComponentKubelet , statusz .NewRegistry (compatibility .DefaultBuildEffectiveVersion ()))
576
582
}
577
583
584
+ if utilfeature .DefaultFeatureGate .Enabled (zpagesfeatures .ComponentFlagz ) {
585
+ if s .flagz != nil {
586
+ s .addMetricsBucketMatcher ("flagz" )
587
+ flagz .Install (s .restfulCont , ComponentKubelet , s .flagz )
588
+ }
589
+ }
590
+
578
591
// The /runningpods endpoint is used for testing only.
579
592
s .addMetricsBucketMatcher ("runningpods" )
580
593
ws = new (restful.WebService )
0 commit comments