<p><code>kubectl logs -f &lt;pod-name&gt;</code></p>
<p>This command shows the logs from the container log file.</p>
<p>Basically, I want to check the difference between &quot;what is generated by the container&quot; and &quot;what is written to the log file&quot;.
I see some unusual binary logs, so I just want to find out if the container is creating those binary logs or the logs are not properly getting written to the log file.</p>
<p>&quot;Unusual logs&quot;:</p>
<p><code>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\</code></p>

<p>Usually, containerized applications, do not write to the log files but send messages to <code>stdout</code>/<code>stderr</code>, there is no point in storing log files inside containers, as they will be deleted when the pod is deleted.<br />
What you see when running</p>
<pre><code>kubectl logs -f &lt;pod-name&gt;
</code></pre>
<p>are messages sent to <code>stdout</code>/<code>stderr</code>. There are no container specific logs here, only application logs.</p>
<hr />
<p>If, for some reason, your application does write to the log file, you can check it by <code>exec</code>ing into pod with e.g.</p>
<pre><code>kubectl exec -it &lt;pod-name&gt; -- /bin/bash
</code></pre>
<p>and read logs as you would in shell.</p>
<h1>Edit</h1>
<h2>Application logs</h2>
<p>A container engine handles and redirects any output generated to a containerized application's <code>stdout</code> and <code>stderr</code> streams. For example, the Docker container engine redirects those two streams to a <a href="https://docs.docker.com/config/containers/logging/configure/" rel="nofollow noreferrer">logging driver</a>, which is configured in Kubernetes to write to a file in JSON format.<br />
Those logs are also saved to</p>
<ul>
<li><code>/var/log/containers/</code></li>
<li><code>/var/log/pods/</code></li>
</ul>
<p>By default, if a container restarts, the kubelet keeps one terminated container with its logs. If a pod is evicted from the node, all corresponding containers are also evicted, along with their logs.</p>
<p>Everything you see by issuing the command</p>
<pre><code>kubectl logs &lt;pod-name&gt;
</code></pre>
<p>is what application sent to <code>stdout</code>/<code>stderr</code>, or what was redirected to <code>stdout</code>/<code>stderr</code>. For example <code>nginx</code>:</p>
<blockquote>
<p>The official nginx image creates a symbolic link from <code>/var/log/nginx/access.log</code> to <code>/dev/stdout</code>, and creates another symbolic link from <code>/var/log/nginx/error.log</code> to <code>/dev/stderr</code>, overwriting the log files and causing logs to be sent to the relevant special device instead.</p>
</blockquote>
<h2>Node logs</h2>
<p>Components that do not run inside containers (e.g kubelet, container runtime) write to <code>journald</code>. Otherwise, they write to <code>.log</code> fies inside <code>/var/log/</code> directory.</p>
<p><em>Excerpt from <a href="https://kubernetes.io/docs/tasks/debug-application-cluster/debug-cluster/#looking-at-logs" rel="nofollow noreferrer">official documentation</a>:</em></p>
<p>For now, digging deeper into the cluster requires logging into the relevant machines. Here are the locations of the relevant log files. (note that on systemd-based systems, you may need to use journalctl instead)</p>
<p><strong>Master</strong></p>
<ul>
<li><code>/var/log/kube-apiserver.log</code> - API Server, responsible for serving the API</li>
<li><code>/var/log/kube-scheduler.log</code> - Scheduler, responsible for making scheduling decisions</li>
<li><code>/var/log/kube-controller-manager.log</code> - Controller that manages replication controllers</li>
</ul>
<p><strong>Worker Nodes</strong></p>
<ul>
<li><code>/var/log/kubelet.log</code> - Kubelet, responsible for running containers on the node</li>
<li><code>/var/log/kube-proxy.log</code> - Kube Proxy, responsible for service load balancing</li>
</ul>
