From 0deddb1a62a71213b706ab29f6b33f601700fa8a Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 25 Aug 2016 14:29:22 -0400 Subject: [PATCH] Do initial 0-byte write to stdout when streaming container logs --- pkg/kubelet/kubelet.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 2bcac327d12..9781e6bee4a 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -2484,6 +2484,14 @@ func (kl *Kubelet) GetKubeletContainerLogs(podFullName, containerName string, lo if err != nil { return err } + + // Do a zero-byte write to stdout before handing off to the container runtime. + // This ensures at least one Write call is made to the writer when copying starts, + // even if we then block waiting for log output from the container. + if _, err := stdout.Write([]byte{}); err != nil { + return err + } + return kl.containerRuntime.GetContainerLogs(pod, containerID, logOptions, stdout, stderr) }