@@ -114,6 +114,7 @@ type Server struct {
114
114
metricsBuckets sets.Set [string ]
115
115
metricsMethodBuckets sets.Set [string ]
116
116
resourceAnalyzer stats.ResourceAnalyzer
117
+ extendedCheckers []healthz.HealthChecker
117
118
}
118
119
119
120
// TLSOptions holds the TLS options.
@@ -156,6 +157,7 @@ func (a *filteringContainer) RegisteredHandlePaths() []string {
156
157
func ListenAndServeKubeletServer (
157
158
host HostInterface ,
158
159
resourceAnalyzer stats.ResourceAnalyzer ,
160
+ checkers []healthz.HealthChecker ,
159
161
kubeCfg * kubeletconfiginternal.KubeletConfiguration ,
160
162
tlsOptions * TLSOptions ,
161
163
auth AuthInterface ,
@@ -164,7 +166,7 @@ func ListenAndServeKubeletServer(
164
166
address := netutils .ParseIPSloppy (kubeCfg .Address )
165
167
port := uint (kubeCfg .Port )
166
168
klog .InfoS ("Starting to listen" , "address" , address , "port" , port )
167
- handler := NewServer (host , resourceAnalyzer , auth , kubeCfg )
169
+ handler := NewServer (host , resourceAnalyzer , checkers , auth , kubeCfg )
168
170
169
171
if utilfeature .DefaultFeatureGate .Enabled (features .KubeletTracing ) {
170
172
handler .InstallTracingFilter (tp )
@@ -198,11 +200,12 @@ func ListenAndServeKubeletServer(
198
200
func ListenAndServeKubeletReadOnlyServer (
199
201
host HostInterface ,
200
202
resourceAnalyzer stats.ResourceAnalyzer ,
203
+ checkers []healthz.HealthChecker ,
201
204
address net.IP ,
202
205
port uint ,
203
206
tp oteltrace.TracerProvider ) {
204
207
klog .InfoS ("Starting to listen read-only" , "address" , address , "port" , port )
205
- s := NewServer (host , resourceAnalyzer , nil , nil )
208
+ s := NewServer (host , resourceAnalyzer , checkers , nil , nil )
206
209
207
210
if utilfeature .DefaultFeatureGate .Enabled (features .KubeletTracing ) {
208
211
s .InstallTracingFilter (tp , otelrestful .WithPublicEndpoint ())
@@ -278,6 +281,7 @@ type HostInterface interface {
278
281
func NewServer (
279
282
host HostInterface ,
280
283
resourceAnalyzer stats.ResourceAnalyzer ,
284
+ checkers []healthz.HealthChecker ,
281
285
auth AuthInterface ,
282
286
kubeCfg * kubeletconfiginternal.KubeletConfiguration ) Server {
283
287
@@ -288,6 +292,7 @@ func NewServer(
288
292
restfulCont : & filteringContainer {Container : restful .NewContainer ()},
289
293
metricsBuckets : sets .New [string ](),
290
294
metricsMethodBuckets : sets .New [string ]("OPTIONS" , "GET" , "HEAD" , "POST" , "PUT" , "DELETE" , "TRACE" , "CONNECT" ),
295
+ extendedCheckers : checkers ,
291
296
}
292
297
if auth != nil {
293
298
server .InstallAuthFilter ()
@@ -392,11 +397,13 @@ func (s *Server) getMetricMethodBucket(method string) string {
392
397
// patterns with the restful Container.
393
398
func (s * Server ) InstallDefaultHandlers () {
394
399
s .addMetricsBucketMatcher ("healthz" )
395
- healthz .InstallHandler ( s . restfulCont ,
400
+ checkers := [] healthz.HealthChecker {
396
401
healthz .PingHealthz ,
397
402
healthz .LogHealthz ,
398
403
healthz .NamedCheck ("syncloop" , s .host .SyncLoopHealthCheck ),
399
- )
404
+ }
405
+ checkers = append (checkers , s .extendedCheckers ... )
406
+ healthz .InstallHandler (s .restfulCont , checkers ... )
400
407
401
408
slis.SLIMetricsWithReset {}.Install (s .restfulCont )
402
409
0 commit comments