diff --git a/pkg/kubelet/server/server.go b/pkg/kubelet/server/server.go index be3a6a311ed..c57b8c3f7be 100644 --- a/pkg/kubelet/server/server.go +++ b/pkg/kubelet/server/server.go @@ -388,9 +388,6 @@ func (s *Server) InstallDefaultHandlers() { s.addMetricsBucketMatcher("metrics/resource") s.restfulCont.Handle(metricsPath, legacyregistry.Handler()) - // cAdvisor metrics are exposed under the secured handler as well - r := compbasemetrics.NewKubeRegistry() - includedMetrics := cadvisormetrics.MetricSet{ cadvisormetrics.CpuUsageMetrics: struct{}{}, cadvisormetrics.MemoryUsageMetrics: struct{}{}, @@ -402,14 +399,19 @@ func (s *Server) InstallDefaultHandlers() { cadvisormetrics.ProcessMetrics: struct{}{}, cadvisormetrics.OOMMetrics: struct{}{}, } - - cadvisorOpts := cadvisorv2.RequestOptions{ - IdType: cadvisorv2.TypeName, - Count: 1, - Recursive: true, - } - r.RawMustRegister(metrics.NewPrometheusCollector(prometheusHostAdapter{s.host}, containerPrometheusLabelsFunc(s.host), includedMetrics, clock.RealClock{}, cadvisorOpts)) + // cAdvisor metrics are exposed under the secured handler as well + r := compbasemetrics.NewKubeRegistry() r.RawMustRegister(metrics.NewPrometheusMachineCollector(prometheusHostAdapter{s.host}, includedMetrics)) + if utilfeature.DefaultFeatureGate.Enabled(features.PodAndContainerStatsFromCRI) { + r.CustomRegister(collectors.NewCRIMetricsCollector(context.TODO(), s.host.ListPodSandboxMetrics, s.host.ListMetricDescriptors)) + } else { + cadvisorOpts := cadvisorv2.RequestOptions{ + IdType: cadvisorv2.TypeName, + Count: 1, + Recursive: true, + } + r.RawMustRegister(metrics.NewPrometheusCollector(prometheusHostAdapter{s.host}, containerPrometheusLabelsFunc(s.host), includedMetrics, clock.RealClock{}, cadvisorOpts)) + } s.restfulCont.Handle(cadvisorMetricsPath, compbasemetrics.HandlerFor(r, compbasemetrics.HandlerOpts{ErrorHandling: compbasemetrics.ContinueOnError}), )