diff --git a/pkg/apiserver/handlers.go b/pkg/apiserver/handlers.go index 6dfe6cb8afc..6f12269bdec 100644 --- a/pkg/apiserver/handlers.go +++ b/pkg/apiserver/handlers.go @@ -230,6 +230,15 @@ func (tw *baseTimeoutWriter) Write(p []byte) (int, error) { return tw.w.Write(p) } +func (tw *baseTimeoutWriter) Flush() { + tw.mu.Lock() + defer tw.mu.Unlock() + + if flusher, ok := tw.w.(http.Flusher); ok { + flusher.Flush() + } +} + func (tw *baseTimeoutWriter) WriteHeader(code int) { tw.mu.Lock() defer tw.mu.Unlock() diff --git a/pkg/kubelet/server.go b/pkg/kubelet/server.go index f8075832f28..270e050ad0f 100644 --- a/pkg/kubelet/server.go +++ b/pkg/kubelet/server.go @@ -347,7 +347,7 @@ func (s *Server) getContainerLogs(request *restful.Request, response *restful.Re response.WriteError(http.StatusInternalServerError, fmt.Errorf("unable to convert %v into http.Flusher", response)) return } - fw := flushwriter.Wrap(response) + fw := flushwriter.Wrap(response.ResponseWriter) response.Header().Set("Transfer-Encoding", "chunked") response.WriteHeader(http.StatusOK) err := s.host.GetKubeletContainerLogs(kubecontainer.GetPodFullName(pod), containerName, tail, follow, previous, fw, fw)