Merge pull request #121770 from frzifus/tracing_kubelet_read-only
pass tracerprovider to kublet-readonly server
This commit is contained in:
		@@ -1275,7 +1275,7 @@ func startKubelet(k kubelet.Bootstrap, podCfg *config.PodConfig, kubeCfg *kubele
 | 
				
			|||||||
		go k.ListenAndServe(kubeCfg, kubeDeps.TLSOptions, kubeDeps.Auth, kubeDeps.TracerProvider)
 | 
							go k.ListenAndServe(kubeCfg, kubeDeps.TLSOptions, kubeDeps.Auth, kubeDeps.TracerProvider)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if kubeCfg.ReadOnlyPort > 0 {
 | 
						if kubeCfg.ReadOnlyPort > 0 {
 | 
				
			||||||
		go k.ListenAndServeReadOnly(netutils.ParseIPSloppy(kubeCfg.Address), uint(kubeCfg.ReadOnlyPort))
 | 
							go k.ListenAndServeReadOnly(netutils.ParseIPSloppy(kubeCfg.Address), uint(kubeCfg.ReadOnlyPort), kubeDeps.TracerProvider)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	go k.ListenAndServePodResources()
 | 
						go k.ListenAndServePodResources()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -237,7 +237,7 @@ type Bootstrap interface {
 | 
				
			|||||||
	BirthCry()
 | 
						BirthCry()
 | 
				
			||||||
	StartGarbageCollection()
 | 
						StartGarbageCollection()
 | 
				
			||||||
	ListenAndServe(kubeCfg *kubeletconfiginternal.KubeletConfiguration, tlsOptions *server.TLSOptions, auth server.AuthInterface, tp trace.TracerProvider)
 | 
						ListenAndServe(kubeCfg *kubeletconfiginternal.KubeletConfiguration, tlsOptions *server.TLSOptions, auth server.AuthInterface, tp trace.TracerProvider)
 | 
				
			||||||
	ListenAndServeReadOnly(address net.IP, port uint)
 | 
						ListenAndServeReadOnly(address net.IP, port uint, tp trace.TracerProvider)
 | 
				
			||||||
	ListenAndServePodResources()
 | 
						ListenAndServePodResources()
 | 
				
			||||||
	Run(<-chan kubetypes.PodUpdate)
 | 
						Run(<-chan kubetypes.PodUpdate)
 | 
				
			||||||
	RunOnce(<-chan kubetypes.PodUpdate) ([]RunPodResult, error)
 | 
						RunOnce(<-chan kubetypes.PodUpdate) ([]RunPodResult, error)
 | 
				
			||||||
@@ -2941,8 +2941,8 @@ func (kl *Kubelet) ListenAndServe(kubeCfg *kubeletconfiginternal.KubeletConfigur
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ListenAndServeReadOnly runs the kubelet HTTP server in read-only mode.
 | 
					// ListenAndServeReadOnly runs the kubelet HTTP server in read-only mode.
 | 
				
			||||||
func (kl *Kubelet) ListenAndServeReadOnly(address net.IP, port uint) {
 | 
					func (kl *Kubelet) ListenAndServeReadOnly(address net.IP, port uint, tp trace.TracerProvider) {
 | 
				
			||||||
	server.ListenAndServeKubeletReadOnlyServer(kl, kl.resourceAnalyzer, address, port)
 | 
						server.ListenAndServeKubeletReadOnlyServer(kl, kl.resourceAnalyzer, address, port, tp)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ListenAndServePodResources runs the kubelet podresources grpc service
 | 
					// ListenAndServePodResources runs the kubelet podresources grpc service
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,12 @@ func ListenAndServeKubeletServer(
 | 
				
			|||||||
	address := netutils.ParseIPSloppy(kubeCfg.Address)
 | 
						address := netutils.ParseIPSloppy(kubeCfg.Address)
 | 
				
			||||||
	port := uint(kubeCfg.Port)
 | 
						port := uint(kubeCfg.Port)
 | 
				
			||||||
	klog.InfoS("Starting to listen", "address", address, "port", port)
 | 
						klog.InfoS("Starting to listen", "address", address, "port", port)
 | 
				
			||||||
	handler := NewServer(host, resourceAnalyzer, auth, tp, kubeCfg)
 | 
						handler := NewServer(host, resourceAnalyzer, auth, kubeCfg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if utilfeature.DefaultFeatureGate.Enabled(features.KubeletTracing) {
 | 
				
			||||||
 | 
							handler.InstallTracingFilter(tp)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	s := &http.Server{
 | 
						s := &http.Server{
 | 
				
			||||||
		Addr:           net.JoinHostPort(address.String(), strconv.FormatUint(uint64(port), 10)),
 | 
							Addr:           net.JoinHostPort(address.String(), strconv.FormatUint(uint64(port), 10)),
 | 
				
			||||||
		Handler:        &handler,
 | 
							Handler:        &handler,
 | 
				
			||||||
@@ -191,10 +196,14 @@ func ListenAndServeKubeletReadOnlyServer(
 | 
				
			|||||||
	host HostInterface,
 | 
						host HostInterface,
 | 
				
			||||||
	resourceAnalyzer stats.ResourceAnalyzer,
 | 
						resourceAnalyzer stats.ResourceAnalyzer,
 | 
				
			||||||
	address net.IP,
 | 
						address net.IP,
 | 
				
			||||||
	port uint) {
 | 
						port uint,
 | 
				
			||||||
 | 
						tp oteltrace.TracerProvider) {
 | 
				
			||||||
	klog.InfoS("Starting to listen read-only", "address", address, "port", port)
 | 
						klog.InfoS("Starting to listen read-only", "address", address, "port", port)
 | 
				
			||||||
	// TODO: https://github.com/kubernetes/kubernetes/issues/109829 tracer should use WithPublicEndpoint
 | 
						s := NewServer(host, resourceAnalyzer, nil, nil)
 | 
				
			||||||
	s := NewServer(host, resourceAnalyzer, nil, oteltrace.NewNoopTracerProvider(), nil)
 | 
					
 | 
				
			||||||
 | 
						if utilfeature.DefaultFeatureGate.Enabled(features.KubeletTracing) {
 | 
				
			||||||
 | 
							s.InstallTracingFilter(tp, otelrestful.WithPublicEndpoint())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	server := &http.Server{
 | 
						server := &http.Server{
 | 
				
			||||||
		Addr:           net.JoinHostPort(address.String(), strconv.FormatUint(uint64(port), 10)),
 | 
							Addr:           net.JoinHostPort(address.String(), strconv.FormatUint(uint64(port), 10)),
 | 
				
			||||||
@@ -264,7 +273,6 @@ func NewServer(
 | 
				
			|||||||
	host HostInterface,
 | 
						host HostInterface,
 | 
				
			||||||
	resourceAnalyzer stats.ResourceAnalyzer,
 | 
						resourceAnalyzer stats.ResourceAnalyzer,
 | 
				
			||||||
	auth AuthInterface,
 | 
						auth AuthInterface,
 | 
				
			||||||
	tp oteltrace.TracerProvider,
 | 
					 | 
				
			||||||
	kubeCfg *kubeletconfiginternal.KubeletConfiguration) Server {
 | 
						kubeCfg *kubeletconfiginternal.KubeletConfiguration) Server {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	server := Server{
 | 
						server := Server{
 | 
				
			||||||
@@ -278,9 +286,6 @@ func NewServer(
 | 
				
			|||||||
	if auth != nil {
 | 
						if auth != nil {
 | 
				
			||||||
		server.InstallAuthFilter()
 | 
							server.InstallAuthFilter()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if utilfeature.DefaultFeatureGate.Enabled(features.KubeletTracing) {
 | 
					 | 
				
			||||||
		server.InstallTracingFilter(tp)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	server.InstallDefaultHandlers()
 | 
						server.InstallDefaultHandlers()
 | 
				
			||||||
	if kubeCfg != nil && kubeCfg.EnableDebuggingHandlers {
 | 
						if kubeCfg != nil && kubeCfg.EnableDebuggingHandlers {
 | 
				
			||||||
		server.InstallDebuggingHandlers()
 | 
							server.InstallDebuggingHandlers()
 | 
				
			||||||
@@ -334,8 +339,8 @@ func (s *Server) InstallAuthFilter() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// InstallTracingFilter installs OpenTelemetry tracing filter with the restful Container.
 | 
					// InstallTracingFilter installs OpenTelemetry tracing filter with the restful Container.
 | 
				
			||||||
func (s *Server) InstallTracingFilter(tp oteltrace.TracerProvider) {
 | 
					func (s *Server) InstallTracingFilter(tp oteltrace.TracerProvider, opts ...otelrestful.Option) {
 | 
				
			||||||
	s.restfulCont.Filter(otelrestful.OTelFilter("kubelet", otelrestful.WithTracerProvider(tp)))
 | 
						s.restfulCont.Filter(otelrestful.OTelFilter("kubelet", append(opts, otelrestful.WithTracerProvider(tp))...))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// addMetricsBucketMatcher adds a regexp matcher and the relevant bucket to use when
 | 
					// addMetricsBucketMatcher adds a regexp matcher and the relevant bucket to use when
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,6 @@ import (
 | 
				
			|||||||
	cadvisorapiv2 "github.com/google/cadvisor/info/v2"
 | 
						cadvisorapiv2 "github.com/google/cadvisor/info/v2"
 | 
				
			||||||
	"github.com/stretchr/testify/assert"
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
	"github.com/stretchr/testify/require"
 | 
						"github.com/stretchr/testify/require"
 | 
				
			||||||
	oteltrace "go.opentelemetry.io/otel/trace"
 | 
					 | 
				
			||||||
	v1 "k8s.io/api/core/v1"
 | 
						v1 "k8s.io/api/core/v1"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/types"
 | 
						"k8s.io/apimachinery/pkg/types"
 | 
				
			||||||
@@ -361,7 +360,6 @@ func newServerTestWithDebuggingHandlers(kubeCfg *kubeletconfiginternal.KubeletCo
 | 
				
			|||||||
		fw.fakeKubelet,
 | 
							fw.fakeKubelet,
 | 
				
			||||||
		stats.NewResourceAnalyzer(fw.fakeKubelet, time.Minute, &record.FakeRecorder{}),
 | 
							stats.NewResourceAnalyzer(fw.fakeKubelet, time.Minute, &record.FakeRecorder{}),
 | 
				
			||||||
		fw.fakeAuth,
 | 
							fw.fakeAuth,
 | 
				
			||||||
		oteltrace.NewNoopTracerProvider(),
 | 
					 | 
				
			||||||
		kubeCfg,
 | 
							kubeCfg,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	fw.serverUnderTest = &server
 | 
						fw.serverUnderTest = &server
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user