Merge pull request #128987 from Henrywu573/kubescheduler_statuz

Add statusz endpoint for kube-scheduler
This commit is contained in:
Kubernetes Prow Robot 2025-02-27 18:50:29 -08:00 committed by GitHub
commit a0be82d80d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 0 deletions

View File

@ -39,6 +39,7 @@ import (
"k8s.io/apiserver/pkg/server/healthz"
"k8s.io/apiserver/pkg/server/mux"
"k8s.io/apiserver/pkg/server/routes"
"k8s.io/apiserver/pkg/util/compatibility"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/scheme"
@ -59,6 +60,7 @@ import (
"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"
"k8s.io/klog/v2"
schedulerserverconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config"
"k8s.io/kubernetes/cmd/kube-scheduler/app/options"
@ -371,6 +373,11 @@ func newEndpointsHandler(config *kubeschedulerconfig.KubeSchedulerConfiguration,
flagz.Install(pathRecorderMux, kubeScheduler, flagReader)
}
}
if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentStatusz) {
statusz.Install(pathRecorderMux, kubeScheduler, statusz.NewRegistry(compatibility.DefaultBuildEffectiveVersion()))
}
return pathRecorderMux
}

View File

@ -39,6 +39,8 @@ import (
func TestEndpointHandlers(t *testing.T) {
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ComponentFlagz, true)
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ComponentStatusz, true)
server, configStr, _, err := startTestAPIServer(t)
if err != nil {
t.Fatalf("Failed to start kube-apiserver server: %v", err)
@ -128,6 +130,16 @@ func TestEndpointHandlers(t *testing.T) {
`Warning: This endpoint is not meant to be machine parseable, ` +
`has no formatting compatibility guarantees and is for debugging purposes only.`,
},
{
name: "/statusz",
path: "/statusz",
requestHeader: map[string]string{"Accept": "text/plain"},
wantResponseCode: http.StatusOK,
wantResponseBodyRegx: `^\n` +
`kube-scheduler statusz\n` +
`Warning: This endpoint is not meant to be machine parseable, ` +
`has no formatting compatibility guarantees and is for debugging purposes only.`,
},
}
for _, tt := range tests {