mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
pkg/kubelet/server: migrate to structured logs
This commit is contained in:
parent
765249c524
commit
db5de9169f
@ -109,7 +109,7 @@ func (n nodeAuthorizerAttributesGetter) GetRequestAttributes(u user.Info, r *htt
|
|||||||
attrs.Subresource = "spec"
|
attrs.Subresource = "spec"
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(5).Infof("Node request attributes: user=%#v attrs=%#v", attrs.GetUser(), attrs)
|
klog.V(5).InfoS("Node request attributes", "user", attrs.GetUser().GetName(), "verb", attrs.GetVerb(), "resource", attrs.GetResource(), "subresource", attrs.GetSubresource())
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ func ListenAndServeKubeletServer(
|
|||||||
enableDebuggingHandlers,
|
enableDebuggingHandlers,
|
||||||
enableContentionProfiling,
|
enableContentionProfiling,
|
||||||
enableSystemLogHandler bool) {
|
enableSystemLogHandler bool) {
|
||||||
klog.Infof("Starting to listen on %s:%d", address, port)
|
klog.InfoS("Starting to listen", "address", address, "port", port)
|
||||||
handler := NewServer(host, resourceAnalyzer, auth, enableCAdvisorJSONEndpoints, enableDebuggingHandlers, enableContentionProfiling, enableSystemLogHandler)
|
handler := NewServer(host, resourceAnalyzer, auth, enableCAdvisorJSONEndpoints, enableDebuggingHandlers, enableContentionProfiling, enableSystemLogHandler)
|
||||||
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)),
|
||||||
@ -167,7 +167,7 @@ func ListenAndServeKubeletServer(
|
|||||||
|
|
||||||
// ListenAndServeKubeletReadOnlyServer initializes a server to respond to HTTP network requests on the Kubelet.
|
// ListenAndServeKubeletReadOnlyServer initializes a server to respond to HTTP network requests on the Kubelet.
|
||||||
func ListenAndServeKubeletReadOnlyServer(host HostInterface, resourceAnalyzer stats.ResourceAnalyzer, address net.IP, port uint, enableCAdvisorJSONEndpoints bool) {
|
func ListenAndServeKubeletReadOnlyServer(host HostInterface, resourceAnalyzer stats.ResourceAnalyzer, address net.IP, port uint, enableCAdvisorJSONEndpoints bool) {
|
||||||
klog.V(1).Infof("Starting to listen read-only on %s:%d", address, port)
|
klog.InfoS("Starting to listen read-only", "address", address, "port", port)
|
||||||
s := NewServer(host, resourceAnalyzer, nil, enableCAdvisorJSONEndpoints, false, false, false)
|
s := NewServer(host, resourceAnalyzer, nil, enableCAdvisorJSONEndpoints, false, false, false)
|
||||||
|
|
||||||
server := &http.Server{
|
server := &http.Server{
|
||||||
@ -256,7 +256,7 @@ func (s *Server) InstallAuthFilter() {
|
|||||||
// Authenticate
|
// Authenticate
|
||||||
info, ok, err := s.auth.AuthenticateRequest(req.Request)
|
info, ok, err := s.auth.AuthenticateRequest(req.Request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Unable to authenticate the request due to an error: %v", err)
|
klog.ErrorS(err, "Unable to authenticate the request due to an error")
|
||||||
resp.WriteErrorString(http.StatusUnauthorized, "Unauthorized")
|
resp.WriteErrorString(http.StatusUnauthorized, "Unauthorized")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -271,14 +271,14 @@ func (s *Server) InstallAuthFilter() {
|
|||||||
// Authorize
|
// Authorize
|
||||||
decision, _, err := s.auth.Authorize(req.Request.Context(), attrs)
|
decision, _, err := s.auth.Authorize(req.Request.Context(), attrs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
klog.ErrorS(err, "Authorization error", "user", attrs.GetUser().GetName(), "verb", attrs.GetVerb(), "resource", attrs.GetResource(), "subresource", attrs.GetSubresource())
|
||||||
msg := fmt.Sprintf("Authorization error (user=%s, verb=%s, resource=%s, subresource=%s)", attrs.GetUser().GetName(), attrs.GetVerb(), attrs.GetResource(), attrs.GetSubresource())
|
msg := fmt.Sprintf("Authorization error (user=%s, verb=%s, resource=%s, subresource=%s)", attrs.GetUser().GetName(), attrs.GetVerb(), attrs.GetResource(), attrs.GetSubresource())
|
||||||
klog.Errorf(msg, err)
|
|
||||||
resp.WriteErrorString(http.StatusInternalServerError, msg)
|
resp.WriteErrorString(http.StatusInternalServerError, msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if decision != authorizer.DecisionAllow {
|
if decision != authorizer.DecisionAllow {
|
||||||
|
klog.V(2).InfoS("Forbidden", "user", attrs.GetUser().GetName(), "verb", attrs.GetVerb(), "resource", attrs.GetResource(), "subresource", attrs.GetSubresource())
|
||||||
msg := fmt.Sprintf("Forbidden (user=%s, verb=%s, resource=%s, subresource=%s)", attrs.GetUser().GetName(), attrs.GetVerb(), attrs.GetResource(), attrs.GetSubresource())
|
msg := fmt.Sprintf("Forbidden (user=%s, verb=%s, resource=%s, subresource=%s)", attrs.GetUser().GetName(), attrs.GetVerb(), attrs.GetResource(), attrs.GetSubresource())
|
||||||
klog.V(2).Info(msg)
|
|
||||||
resp.WriteErrorString(http.StatusForbidden, msg)
|
resp.WriteErrorString(http.StatusForbidden, msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -407,7 +407,7 @@ const pprofBasePath = "/debug/pprof/"
|
|||||||
|
|
||||||
// InstallDebuggingHandlers registers the HTTP request patterns that serve logs or run commands/containers
|
// InstallDebuggingHandlers registers the HTTP request patterns that serve logs or run commands/containers
|
||||||
func (s *Server) InstallDebuggingHandlers() {
|
func (s *Server) InstallDebuggingHandlers() {
|
||||||
klog.Infof("Adding debug handlers to kubelet server.")
|
klog.InfoS("Adding debug handlers to kubelet server")
|
||||||
|
|
||||||
s.addMetricsBucketMatcher("run")
|
s.addMetricsBucketMatcher("run")
|
||||||
ws := new(restful.WebService)
|
ws := new(restful.WebService)
|
||||||
@ -744,7 +744,7 @@ func getPortForwardRequestParams(req *restful.Request) portForwardRequestParams
|
|||||||
type responder struct{}
|
type responder struct{}
|
||||||
|
|
||||||
func (r *responder) Error(w http.ResponseWriter, req *http.Request, err error) {
|
func (r *responder) Error(w http.ResponseWriter, req *http.Request, err error) {
|
||||||
klog.Errorf("Error while proxying request: %v", err)
|
klog.ErrorS(err, "Error while proxying request")
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -833,7 +833,7 @@ func writeJSONResponse(response *restful.Response, data []byte) {
|
|||||||
response.Header().Set(restful.HEADER_ContentType, restful.MIME_JSON)
|
response.Header().Set(restful.HEADER_ContentType, restful.MIME_JSON)
|
||||||
response.WriteHeader(http.StatusOK)
|
response.WriteHeader(http.StatusOK)
|
||||||
if _, err := response.Write(data); err != nil {
|
if _, err := response.Write(data); err != nil {
|
||||||
klog.Errorf("Error writing response: %v", err)
|
klog.ErrorS(err, "Error writing response")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ go_library(
|
|||||||
"//pkg/kubelet/cm:go_default_library",
|
"//pkg/kubelet/cm:go_default_library",
|
||||||
"//pkg/kubelet/container:go_default_library",
|
"//pkg/kubelet/container:go_default_library",
|
||||||
"//pkg/kubelet/util:go_default_library",
|
"//pkg/kubelet/util:go_default_library",
|
||||||
"//pkg/kubelet/util/format:go_default_library",
|
|
||||||
"//pkg/volume:go_default_library",
|
"//pkg/volume:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
@ -58,10 +58,10 @@ func newFsResourceAnalyzer(statsProvider Provider, calcVolumePeriod time.Duratio
|
|||||||
func (s *fsResourceAnalyzer) Start() {
|
func (s *fsResourceAnalyzer) Start() {
|
||||||
s.startOnce.Do(func() {
|
s.startOnce.Do(func() {
|
||||||
if s.calcPeriod <= 0 {
|
if s.calcPeriod <= 0 {
|
||||||
klog.Info("Volume stats collection disabled.")
|
klog.InfoS("Volume stats collection disabled")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
klog.Info("Starting FS ResourceAnalyzer")
|
klog.InfoS("Starting FS ResourceAnalyzer")
|
||||||
go wait.Forever(func() { s.updateCachedPodVolumeStats() }, s.calcPeriod)
|
go wait.Forever(func() { s.updateCachedPodVolumeStats() }, s.calcPeriod)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -259,7 +259,7 @@ func (h *handler) handleSystemContainer(request *restful.Request, response *rest
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
if _, ok := stats[containerName]; ok {
|
if _, ok := stats[containerName]; ok {
|
||||||
// If the failure is partial, log it and return a best-effort response.
|
// If the failure is partial, log it and return a best-effort response.
|
||||||
klog.Errorf("Partial failure issuing GetRawContainerInfo(%v): %v", query, err)
|
klog.ErrorS(err, "Partial failure issuing GetRawContainerInfo", "query", query)
|
||||||
} else {
|
} else {
|
||||||
handleError(response, fmt.Sprintf("/stats/container %v", query), err)
|
handleError(response, fmt.Sprintf("/stats/container %v", query), err)
|
||||||
return
|
return
|
||||||
@ -295,7 +295,7 @@ func (h *handler) handlePodContainer(request *restful.Request, response *restful
|
|||||||
|
|
||||||
pod, ok := h.provider.GetPodByName(params["namespace"], params["podName"])
|
pod, ok := h.provider.GetPodByName(params["namespace"], params["podName"])
|
||||||
if !ok {
|
if !ok {
|
||||||
klog.V(4).Infof("Container not found: %v", params)
|
klog.V(4).InfoS("Container not found", "pod", klog.KRef(params["namespace"], params["podName"]))
|
||||||
response.WriteError(http.StatusNotFound, kubecontainer.ErrContainerNotFound)
|
response.WriteError(http.StatusNotFound, kubecontainer.ErrContainerNotFound)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -314,7 +314,7 @@ func (h *handler) handlePodContainer(request *restful.Request, response *restful
|
|||||||
|
|
||||||
func writeResponse(response *restful.Response, stats interface{}) {
|
func writeResponse(response *restful.Response, stats interface{}) {
|
||||||
if err := response.WriteAsJson(stats); err != nil {
|
if err := response.WriteAsJson(stats); err != nil {
|
||||||
klog.Errorf("Error writing response: %v", err)
|
klog.ErrorS(err, "Error writing response")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,7 +326,7 @@ func handleError(response *restful.Response, request string, err error) {
|
|||||||
response.WriteError(http.StatusNotFound, err)
|
response.WriteError(http.StatusNotFound, err)
|
||||||
default:
|
default:
|
||||||
msg := fmt.Sprintf("Internal Error: %v", err)
|
msg := fmt.Sprintf("Internal Error: %v", err)
|
||||||
klog.Errorf("HTTP InternalServerError serving %s: %s", request, msg)
|
klog.ErrorS(err, "HTTP InternalServerError serving", "request", request)
|
||||||
response.WriteErrorString(http.StatusInternalServerError, msg)
|
response.WriteErrorString(http.StatusInternalServerError, msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ func NewSummaryProvider(statsProvider Provider) SummaryProvider {
|
|||||||
bootTime, err := util.GetBootTime()
|
bootTime, err := util.GetBootTime()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// bootTime will be zero if we encounter an error getting the boot time.
|
// bootTime will be zero if we encounter an error getting the boot time.
|
||||||
klog.Warningf("Error getting system boot time. Node metrics will have an incorrect start time: %v", err)
|
klog.InfoS("Error getting system boot time. Node metrics will have an incorrect start time", "err", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &summaryProviderImpl{
|
return &summaryProviderImpl{
|
||||||
|
@ -44,7 +44,7 @@ func (sp *summaryProviderImpl) GetSystemContainersStats(nodeConfig cm.NodeConfig
|
|||||||
}
|
}
|
||||||
s, _, err := sp.provider.GetCgroupStats(cont.name, cont.forceStatsUpdate)
|
s, _, err := sp.provider.GetCgroupStats(cont.name, cont.forceStatsUpdate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to get system container stats for %q: %v", cont.name, err)
|
klog.ErrorS(err, "Failed to get system container stats", "containerName", cont.name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// System containers don't have a filesystem associated with them.
|
// System containers don't have a filesystem associated with them.
|
||||||
@ -79,7 +79,7 @@ func (sp *summaryProviderImpl) GetSystemContainersCPUAndMemoryStats(nodeConfig c
|
|||||||
}
|
}
|
||||||
s, err := sp.provider.GetCgroupCPUAndMemoryStats(cont.name, cont.forceStatsUpdate)
|
s, err := sp.provider.GetCgroupCPUAndMemoryStats(cont.name, cont.forceStatsUpdate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to get system container stats for %q: %v", cont.name, err)
|
klog.ErrorS(err, "Failed to get system container stats", "containerName", cont.name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
s.Name = sys
|
s.Name = sys
|
||||||
|
@ -24,7 +24,6 @@ import (
|
|||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
stats "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
|
stats "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
|
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
@ -109,7 +108,7 @@ func (s *volumeStatCalculator) calcAndStoreStats() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
// Expected for Volumes that don't support Metrics
|
// Expected for Volumes that don't support Metrics
|
||||||
if !volume.IsNotSupported(err) {
|
if !volume.IsNotSupported(err) {
|
||||||
klog.V(4).Infof("Failed to calculate volume metrics for pod %s volume %s: %+v", format.Pod(s.pod), name, err)
|
klog.V(4).InfoS("Failed to calculate volume metrics", "pod", klog.KObj(s.pod), "podUID", s.pod.UID, "volumeName", name, "err", err)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user