<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>fluent-bit on Jack Henschel's Blog</title><link>https://blog.cubieserver.de/tags/fluent-bit/</link><description>Recent content in fluent-bit on Jack Henschel's Blog</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Thu, 09 Nov 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.cubieserver.de/tags/fluent-bit/index.xml" rel="self" type="application/rss+xml"/><item><title>Collecting Kubernetes Events with Fluent Bit</title><link>https://blog.cubieserver.de/2023/collecting-kubernetes-events-with-fluent-bit/</link><pubDate>Thu, 09 Nov 2023 00:00:00 +0000</pubDate><guid>https://blog.cubieserver.de/2023/collecting-kubernetes-events-with-fluent-bit/</guid><description>&lt;p>Kubernetes &lt;code>Events&lt;/code> are ephemeral objects that indicate why and when a particular state changed in the cluster.
They describe events such as when a pod was stopped (or failed), why a node become unhealthy, when liveness and readiness probes failed and many more (see also: &lt;a href="https://www.airplane.dev/blog/kubernetes-events">A complete guide to Kubernetes Events&lt;/a>).&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-sh" data-lang="sh">$ kubectl get events --sort-by&lt;span style="color:#f92672">=&lt;/span>metadata.creationTimestamp
AGE TYPE REASON OBJECT MESSAGE
59s Normal Created pod/sls-availability-28322500-9c24g Created container sls-availability
59s Normal Pulled pod/sls-availability-28322500-9c24g Container image &lt;span style="color:#e6db74">&amp;#34;example.com/tools/availability:RELEASE.2022.08.03T13-39-24Z&amp;#34;&lt;/span> already present on machine
56s Normal Completed job/sls-availability-28322500 Job completed
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>These objects are stored in the Kubernetes control plane, more precisely in the etcd database.
To avoid polluting the database with these objects, they are automatically pruned by the Kubernetes API server after a fixed period of time (default: 1 hour) that can be configured with the &lt;code>--event-ttl&lt;/code> &lt;a href="https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/">API server argument&lt;/a>.&lt;/p>
&lt;p>When operating Kubernetes clusters (especially when doing it for clients/users) we sometimes want to go back further (yesterday, last week, previous month &amp;hellip;) for troubleshooting purposes.
We could turn up the &lt;code>--event-ttl&lt;/code> like crazy, but this would a) significantly increase the database size and b) likely introduce performance problems.&lt;/p>
&lt;p>Instead, it is a much better approach to collect these logs from the Kubernetes API server when they are generated and ship them to an external log storage system (such as OpenSearch, Loki or Datadog).
This approach enables cheap long-term storage as well as easy correlation between different log types (e.g. seeing &lt;code>Event&lt;/code> and &lt;code>Pod&lt;/code> logs in the same view).&lt;/p>
&lt;p>This post will go over deploying such a component with the Fluent Bit Helm chart, analyzing its performance and making configuration adjustments.
At the bottom of this post is a list of alternative tools that can be used in a similar fashion.&lt;/p>
&lt;h3 id="fluent-bit">
&lt;a href="#fluent-bit">#
&lt;/a>&amp;nbsp;Fluent Bit
&lt;/h3>
&lt;p>&lt;a href="https://docs.fluentbit.io/manual/">Fluent Bit&lt;/a> is an open-source logging agent that can collect logs (and other types of data) from &lt;a href="https://docs.fluentbit.io/manual/pipeline/inputs">many different inputs&lt;/a>, &lt;a href="https://docs.fluentbit.io/manual/pipeline/filters">filter and modify them&lt;/a>, and finally send the result to a &lt;a href="https://docs.fluentbit.io/manual/pipeline/outputs">variety of outputs&lt;/a> - refer to the documentation for an &lt;a href="https://docs.fluentbit.io/manual/concepts/data-pipeline/input">overview of the data pipeline&lt;/a>.
It is written in C and extremely resource efficient (in terms of CPU and memory usage).&lt;/p>
&lt;p>The basic Fluent Bit configuration to collect events from Kubernetes and print them on the console (&lt;code>stdout&lt;/code>) looks as follows:&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-ini" data-lang="ini">&lt;span style="color:#66d9ef">[INPUT]&lt;/span>
&lt;span style="color:#a6e22e">name kubernetes_events&lt;/span>
&lt;span style="color:#a6e22e">tag k8s_events&lt;/span>
&lt;span style="color:#66d9ef">[OUTPUT]&lt;/span>
&lt;span style="color:#a6e22e">name stdout&lt;/span>
&lt;span style="color:#a6e22e">match k8s_events&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Using the &lt;code>kubernetes_events&lt;/code> input plugin locally is a bit tedious, because it does not support reading the Kubernetes configuration and credentials from a &lt;code>KUBECONFIG&lt;/code> file.
Instead the Kubernetes CA, token, API server URL etc. need to be specified separately.&lt;/p>
&lt;p>By using the &lt;a href="https://github.com/fluent/helm-charts/tree/main/charts/fluent-bit">official Helm chart&lt;/a> we can directly deploy Fluent Bit into our cluster and set the appropriate configuration variables - thereby sidestepping the issue described above.&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="color:#f92672">kind&lt;/span>: &lt;span style="color:#ae81ff">Deployment&lt;/span>
&lt;span style="color:#f92672">nameOverride&lt;/span>: &lt;span style="color:#ae81ff">fluent-bit-events-collector&lt;/span>
&lt;span style="color:#f92672">testFramework&lt;/span>:
&lt;span style="color:#f92672">enabled&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>
&lt;span style="color:#f92672">rbac&lt;/span>:
&lt;span style="color:#f92672">create&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;span style="color:#f92672">eventsAccess&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>
&lt;span style="color:#f92672">config&lt;/span>:
&lt;span style="color:#f92672">inputs&lt;/span>: &lt;span style="color:#e6db74">|
&lt;/span>&lt;span style="color:#e6db74"> [INPUT]
&lt;/span>&lt;span style="color:#e6db74"> name kubernetes_events
&lt;/span>&lt;span style="color:#e6db74"> tag k8s_events
&lt;/span>&lt;span style="color:#e6db74">
&lt;/span>&lt;span style="color:#e6db74"> outputs: |
&lt;/span>&lt;span style="color:#e6db74"> [OUTPUT]
&lt;/span>&lt;span style="color:#e6db74"> name stdout
&lt;/span>&lt;span style="color:#e6db74"> match k8s_events
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Reference: &lt;a href="https://github.com/fluent/helm-charts/blob/main/charts/fluent-bit/values.yaml">https://github.com/fluent/helm-charts/blob/main/charts/fluent-bit/values.yaml&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>With the above Helm values (&lt;code>fluent-bit.values.yaml&lt;/code>), we can install the chart as follows in the newly created namespace &amp;ldquo;logging&amp;rdquo;:&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-sh" data-lang="sh">helm repo add fluent https://fluent.github.io/helm-charts
helm install fluent-bit-events-collector &lt;span style="color:#ae81ff">\
&lt;/span>&lt;span style="color:#ae81ff">&lt;/span> --namespace logging --create-namespace &lt;span style="color:#ae81ff">\
&lt;/span>&lt;span style="color:#ae81ff">&lt;/span> --values fluent-bit.values.yaml &lt;span style="color:#ae81ff">\
&lt;/span>&lt;span style="color:#ae81ff">&lt;/span> --version 0.39.1 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;span style="color:#ae81ff">&lt;/span> fluent/fluent-bit
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>The Helm chart takes care of creating the necessary Kubernetes Roles and RoleBindings (note the values &lt;code>rbac.create: true&lt;/code> and &lt;code>rbac.eventsAccess: true&lt;/code>), the credentials for the Kubernetes Service Account as well as injecting the Fluent Bit configuration file.&lt;/p>
&lt;p>We should now see a running pod in the &amp;ldquo;logging&amp;rdquo; namespace - and hopefully some events in the logs!&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-sh" data-lang="sh">$ kubectl -n logging get pods
NAME READY STATUS RESTARTS AGE
fluent-bit-events-collector-664f69754d-wfbkp 1/1 Running &lt;span style="color:#ae81ff">0&lt;/span> 112s
$ kubectl -n logging logs fluent-bit-events-collector-664f69754d-wfbkp
Fluent Bit v2.1.10
* Copyright &lt;span style="color:#f92672">(&lt;/span>C&lt;span style="color:#f92672">)&lt;/span> 2015-2022 The Fluent Bit Authors
* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
* https://fluentbit.io
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>fluent bit&lt;span style="color:#f92672">]&lt;/span> version&lt;span style="color:#f92672">=&lt;/span>2.1.10, commit&lt;span style="color:#f92672">=&lt;/span>b19e9ce674, pid&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>storage&lt;span style="color:#f92672">]&lt;/span> ver&lt;span style="color:#f92672">=&lt;/span>1.5.1, type&lt;span style="color:#f92672">=&lt;/span>memory, sync&lt;span style="color:#f92672">=&lt;/span>normal, checksum&lt;span style="color:#f92672">=&lt;/span>off, max_chunks_up&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">128&lt;/span>
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>cmetrics&lt;span style="color:#f92672">]&lt;/span> version&lt;span style="color:#f92672">=&lt;/span>0.6.3
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>ctraces &lt;span style="color:#f92672">]&lt;/span> version&lt;span style="color:#f92672">=&lt;/span>0.3.1
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>input:kubernetes_events:kubernetes_events.0&lt;span style="color:#f92672">]&lt;/span> initializing
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>input:kubernetes_events:kubernetes_events.0&lt;span style="color:#f92672">]&lt;/span> storage_strategy&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#39;memory&amp;#39;&lt;/span> &lt;span style="color:#f92672">(&lt;/span>memory only&lt;span style="color:#f92672">)&lt;/span>
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>input:kubernetes_events:kubernetes_events.0&lt;span style="color:#f92672">]&lt;/span> API server: https://kubernetes.default.svc:443
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>input:kubernetes_events:kubernetes_events.0&lt;span style="color:#f92672">]&lt;/span> thread instance initialized
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>filter:kubernetes:kubernetes.0&lt;span style="color:#f92672">]&lt;/span> https&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span> host&lt;span style="color:#f92672">=&lt;/span>kubernetes.default.svc port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">443&lt;/span>
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>filter:kubernetes:kubernetes.0&lt;span style="color:#f92672">]&lt;/span> token updated
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>filter:kubernetes:kubernetes.0&lt;span style="color:#f92672">]&lt;/span> local POD info OK
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>filter:kubernetes:kubernetes.0&lt;span style="color:#f92672">]&lt;/span> testing connectivity with API server...
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>filter:kubernetes:kubernetes.0&lt;span style="color:#f92672">]&lt;/span> connectivity OK
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>output:stdout:stdout.0&lt;span style="color:#f92672">]&lt;/span> worker &lt;span style="color:#75715e">#0 started&lt;/span>
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>http_server&lt;span style="color:#f92672">]&lt;/span> listen iface&lt;span style="color:#f92672">=&lt;/span>0.0.0.0 tcp_port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">2020&lt;/span>
&lt;span style="color:#f92672">[&lt;/span>2023/11/07 10:58:29&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span> info&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>sp&lt;span style="color:#f92672">]&lt;/span> stream processor started
&lt;span style="color:#f92672">[&lt;/span>0&lt;span style="color:#f92672">]&lt;/span> k8s_events: &lt;span style="color:#f92672">[[&lt;/span>1699354415.000000000, &lt;span style="color:#f92672">{}]&lt;/span>, &lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;metadata&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0.179551d6593eef9f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;namespace&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;default&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;uid&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;5a78ff62-d6e1-43bc-a727-daa05da70688&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;resourceVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;245&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;creationTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:53:35Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;managedFields&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">[{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;manager&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;kube-controller-manager&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Update&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;apiVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;v1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;time&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:53:35Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fieldsType&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;FieldsV1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fieldsV1&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;f:count&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:firstTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:involvedObject&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:lastTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:message&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:reason&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:source&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;f:component&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:type&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}}}]}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;involvedObject&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;kind&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Node&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;uid&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;7a4677ba-e0b4-4267-baf0-4c3e2f8aca40&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;apiVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;v1&amp;#34;&lt;/span>&lt;span style="color:#f92672">}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reason&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;RegisteredNode&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Node clu-jack-wspgeka3zvll-master-0 event: Registered Node clu-jack-wspgeka3zvll-master-0 in Controller&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;source&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;component&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;node-controller&amp;#34;&lt;/span>&lt;span style="color:#f92672">}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;firstTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:53:35Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;lastTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:53:35Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;count&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;1, &lt;span style="color:#e6db74">&amp;#34;type&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Normal&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;eventTime&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;nil, &lt;span style="color:#e6db74">&amp;#34;reportingComponent&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reportingInstance&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f92672">}]&lt;/span>
&lt;span style="color:#f92672">[&lt;/span>1&lt;span style="color:#f92672">]&lt;/span> k8s_events: &lt;span style="color:#f92672">[[&lt;/span>1699354463.000000000, &lt;span style="color:#f92672">{}]&lt;/span>, &lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;metadata&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0.179551e16cdb3ed4&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;namespace&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;default&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;uid&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;49ff11b9-7781-48a2-9886-43bf5af9c2f5&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;resourceVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;986&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;creationTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:54:23Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;managedFields&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">[{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;manager&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;kubelet&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Update&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;apiVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;v1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;time&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:54:23Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fieldsType&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;FieldsV1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fieldsV1&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;f:count&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:firstTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:involvedObject&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:lastTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:message&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:reason&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:source&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;f:component&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:host&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:type&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}}}]}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;involvedObject&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;kind&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Node&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;uid&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0&amp;#34;&lt;/span>&lt;span style="color:#f92672">}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reason&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;NodeReady&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Node clu-jack-wspgeka3zvll-master-0 status is now: NodeReady&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;source&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;component&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;kubelet&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;host&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0&amp;#34;&lt;/span>&lt;span style="color:#f92672">}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;firstTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:54:23Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;lastTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:54:23Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;count&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;1, &lt;span style="color:#e6db74">&amp;#34;type&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Normal&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;eventTime&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;nil, &lt;span style="color:#e6db74">&amp;#34;reportingComponent&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reportingInstance&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f92672">}]&lt;/span>
&lt;span style="color:#f92672">[&lt;/span>2&lt;span style="color:#f92672">]&lt;/span> k8s_events: &lt;span style="color:#f92672">[[&lt;/span>1699354481.000000000, &lt;span style="color:#f92672">{}]&lt;/span>, &lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;metadata&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0.179551e5c4f5c10c&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;namespace&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;default&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;uid&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;7f2fe1e1-7f2c-4e91-901e-432a6b086b30&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;resourceVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;1101&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;creationTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:54:41Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;managedFields&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">[{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;manager&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;openstack-cloud-controller-manager&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Update&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;apiVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;v1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;time&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:54:41Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fieldsType&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;FieldsV1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fieldsV1&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;f:count&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:firstTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:involvedObject&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:lastTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:message&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:reason&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:source&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;f:component&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f:type&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{}}}]}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;involvedObject&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;kind&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Node&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;uid&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;7a4677ba-e0b4-4267-baf0-4c3e2f8aca40&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;apiVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;v1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;resourceVersion&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;1031&amp;#34;&lt;/span>&lt;span style="color:#f92672">}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reason&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Synced&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Node synced successfully&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;source&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#f92672">{&lt;/span>&lt;span style="color:#e6db74">&amp;#34;component&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;cloud-node-controller&amp;#34;&lt;/span>&lt;span style="color:#f92672">}&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;firstTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:54:41Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;lastTimestamp&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:54:41Z&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;count&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;1, &lt;span style="color:#e6db74">&amp;#34;type&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;Normal&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;eventTime&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;nil, &lt;span style="color:#e6db74">&amp;#34;reportingComponent&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reportingInstance&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt;&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f92672">}]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>The messages above show that Fluent Bit started successfully and was able to connect to the Kubernetes API server.
We can also observe the first &lt;code>Events&lt;/code> (tagged with &lt;code>k8s_events&lt;/code>) formatted as &lt;a href="https://docs.fluentbit.io/manual/concepts/key-concepts">Fluent Bit Records&lt;/a>.
A JSON-formatted and prettified version of event number &lt;code>0&lt;/code> looks like this:&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">32
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">36
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">37
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">38
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">39
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">40
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">41
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">42
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">43
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">44
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">45
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">46
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">47
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">48
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-json" data-lang="json">{
&lt;span style="color:#f92672">&amp;#34;metadata&amp;#34;&lt;/span>: {
&lt;span style="color:#f92672">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0.179551d6593eef9f&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;namespace&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;default&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;uid&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5a78ff62-d6e1-43bc-a727-daa05da70688&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;resourceVersion&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;245&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;creationTimestamp&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:53:35Z&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;managedFields&amp;#34;&lt;/span>: [
{
&lt;span style="color:#f92672">&amp;#34;manager&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;kube-controller-manager&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;operation&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Update&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;apiVersion&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;v1&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;time&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:53:35Z&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;fieldsType&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;FieldsV1&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;fieldsV1&amp;#34;&lt;/span>: {
&lt;span style="color:#f92672">&amp;#34;f:count&amp;#34;&lt;/span>: {},
&lt;span style="color:#f92672">&amp;#34;f:firstTimestamp&amp;#34;&lt;/span>: {},
&lt;span style="color:#f92672">&amp;#34;f:involvedObject&amp;#34;&lt;/span>: {},
&lt;span style="color:#f92672">&amp;#34;f:lastTimestamp&amp;#34;&lt;/span>: {},
&lt;span style="color:#f92672">&amp;#34;f:message&amp;#34;&lt;/span>: {},
&lt;span style="color:#f92672">&amp;#34;f:reason&amp;#34;&lt;/span>: {},
&lt;span style="color:#f92672">&amp;#34;f:source&amp;#34;&lt;/span>: {
&lt;span style="color:#f92672">&amp;#34;f:component&amp;#34;&lt;/span>: {}
},
&lt;span style="color:#f92672">&amp;#34;f:type&amp;#34;&lt;/span>: {}
}
}
]
},
&lt;span style="color:#f92672">&amp;#34;involvedObject&amp;#34;&lt;/span>: {
&lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Node&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;clu-jack-wspgeka3zvll-master-0&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;uid&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;7a4677ba-e0b4-4267-baf0-4c3e2f8aca40&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;apiVersion&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;v1&amp;#34;&lt;/span>
},
&lt;span style="color:#f92672">&amp;#34;reason&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;RegisteredNode&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;message&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Node clu-jack-wspgeka3zvll-master-0 event: Registered Node clu-jack-wspgeka3zvll-master-0 in Controller&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;source&amp;#34;&lt;/span>: {
&lt;span style="color:#f92672">&amp;#34;component&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;node-controller&amp;#34;&lt;/span>
},
&lt;span style="color:#f92672">&amp;#34;firstTimestamp&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:53:35Z&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;lastTimestamp&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;2023-11-07T10:53:35Z&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;count&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Normal&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;eventTime&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">null&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;reportingComponent&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;reportingInstance&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>
}
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fantastic! Now you can adjust the destination of these logs (the &amp;ldquo;output&amp;rdquo;) according to your infrastructure (refer to &lt;a href="https://docs.fluentbit.io/manual/pipeline/outputs/">this list of supported outputs&lt;/a>) and you&amp;rsquo;re good to go - &lt;em>almost&lt;/em>.&lt;/p>
&lt;h3 id="optimization">
&lt;a href="#optimization">#
&lt;/a>&amp;nbsp;Optimization
&lt;/h3>
&lt;p>After deploying this setup in my Kubernetes cluster I checked the container metrics (Prometheus/Grafana) and noticed that the Fluent Bit Pod had a really high incoming traffic rate - on average 3 megabit per second.
This did not correspond in any way to the amount of Kubernetes Events the cluster was generating, so I had to start investigating this behavior.&lt;/p>
&lt;p>&lt;img src="./network-activity-before.png" alt="screenshot of pod incoming traffic">&lt;/p>
&lt;p>I read the &lt;a href="https://docs.fluentbit.io/manual/pipeline/inputs/kubernetes-events">documentation of Kubernetes Events plugin&lt;/a> again and came across some interesting settings, but from their descriptions I could not figure out what they &lt;em>really&lt;/em> meant.
The following are direct quotes from the documentation:&lt;/p>
&lt;ul>
&lt;li>&lt;code>interval_sec&lt;/code>: Set the polling interval for each channel (default: 5).&lt;/li>
&lt;li>&lt;code>kube_request_limit&lt;/code>: Kubernetes limit parameter for events query, no limit applied when set to 0 (default: 0).&lt;/li>
&lt;li>&lt;code>kube_retention_time&lt;/code>: Kubernetes retention time for events (default: 1h).&lt;/li>
&lt;li>&lt;code>db&lt;/code>: Set a database file to keep track of recorded Kubernetes events.&lt;/li>
&lt;li>&lt;code>db.sync&lt;/code>: Set a database sync method. values: extra, full, normal and off (default: normal).&lt;/li>
&lt;/ul>
&lt;p>Thus I had to resort to the &lt;a href="https://github.com/fluent/fluent-bit/blob/2702f4f9d960ef23c662d070cbd2335386926db9/plugins/in_kubernetes_events/kubernetes_events.c">source code of the plugin&lt;/a> to find out what&amp;rsquo;s really going on.
Here&amp;rsquo;s my summary:&lt;/p>
&lt;ul>
&lt;li>The plugin does not &lt;em>watch&lt;/em> events (like what &lt;code>kubectl get events -w&lt;/code> does), it instead uses &lt;em>polling&lt;/em>.&lt;/li>
&lt;li>At periodic intervals (&lt;code>interval_sec&lt;/code>), the plugin fetches &lt;em>ALL&lt;/em> Kubernetes Events from the API (&lt;code>kube_request_limit: 0&lt;/code>).&lt;/li>
&lt;li>These events are then stored in a local database (&lt;code>db&lt;/code>).&lt;/li>
&lt;li>This database is used to avoid processing the same event multiple times (checked based on the &lt;code>resourceVersion&lt;/code> of the event).&lt;/li>
&lt;li>Events are deleted from the local database if they are older than the Kubernetes Events TTL (&lt;code>kube_retention_time&lt;/code>).&lt;/li>
&lt;/ul>
&lt;p>I was honestly quite perplexed when I found out that this is the case.
Why is Fluent Bit not using a streaming approach by watching Events on the Kubernetes API server? We may never know.
But this explains why I was seeing such large amounts of incoming traffic: &lt;strong>by default, Fluent Bit dumps the full list of Events every 5 seconds.&lt;/strong>
Let&amp;rsquo;s do a quick check:&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-sh" data-lang="sh">$ kubectl get events -A | wc -l
&lt;span style="color:#ae81ff">10961&lt;/span> &lt;span style="color:#75715e"># number of events&lt;/span>
$ kubectl get events -A -o json | wc -c
&lt;span style="color:#ae81ff">2646663&lt;/span> &lt;span style="color:#75715e"># number of characters&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Yup, that is going to cause a lot of traffic if we run it every 5 seconds.&lt;/p>
&lt;p>With this knowledge we can tame the behavior of Fluent Bit:&lt;/p>
&lt;ul>
&lt;li>fetch events less often: since collecting events is not time-critical (the live events can always be viewed directly in the cluster), the period can be increased to higher value such as 30 or 60 seconds.&lt;/li>
&lt;li>use pagination to avoid fetching all events: by setting &lt;code>kube_request_limits&lt;/code> (e.g. &lt;code>250&lt;/code>) the plugin will only fetch an ordered subset of events from the API server; since they are ordered, if one of the events in the current batch has already been processed, the plugin won&amp;rsquo;t make additional API calls to fetch the rest of the events (since &amp;ldquo;the rest&amp;rdquo; is already stored in the local database).&lt;/li>
&lt;/ul>
&lt;p>The final configuration looks as follows.
Of course, it should be adjusted according to the activity and size of your cluster(s).&lt;/p>
&lt;div class="highlight">&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7
&lt;/span>&lt;span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-ini" data-lang="ini">&lt;span style="color:#66d9ef">[INPUT]&lt;/span>
&lt;span style="color:#a6e22e">name kubernetes_events&lt;/span>
&lt;span style="color:#75715e"># add the tag &amp;#34;k8s_events&amp;#34; to all events coming from this input&lt;/span>
&lt;span style="color:#a6e22e">tag k8s_events&lt;/span>
&lt;span style="color:#75715e"># ask k8s API for updates every 30 seconds&lt;/span>
&lt;span style="color:#a6e22e">interval_sec 30&lt;/span>
&lt;span style="color:#75715e"># fetch at most 250 items per requests (pagination)&lt;/span>
&lt;span style="color:#a6e22e">kube_request_limit 250&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>With these changes the network traffic looks much more reasonable (and also CPU and memory consumption are lower).&lt;/p>
&lt;p>&lt;img src="network-activity-after.png" alt="network activity after">&lt;/p>
&lt;p>Happy logging!&lt;/p>
&lt;h2 id="see-also">
&lt;a href="#see-also">#
&lt;/a>&amp;nbsp;See also
&lt;/h2>
&lt;ul>
&lt;li>Grafana Monitoring Agent supports collecting and forwarding Kubernetes Events: &lt;a href="https://grafana.com/blog/2023/01/23/how-to-use-kubernetes-events-for-effective-alerting-and-monitoring/">https://grafana.com/blog/2023/01/23/how-to-use-kubernetes-events-for-effective-alerting-and-monitoring/&lt;/a>&lt;/li>
&lt;li>Kubernetes Event Exporter offers built-in integrations for many logging systems: &lt;a href="https://github.com/resmoio/kubernetes-event-exporter">https://github.com/resmoio/kubernetes-event-exporter&lt;/a>&lt;/li>
&lt;li>Vector does not have a Kubernetes Events source: &lt;a href="https://github.com/vectordotdev/vector/issues/17333">https://github.com/vectordotdev/vector/issues/17333&lt;/a>&lt;/li>
&lt;li>Kubewatch can report when any resources in the cluster (including Events) are created/modified/deleted: &lt;a href="https://github.com/robusta-dev/kubewatch">https://github.com/robusta-dev/kubewatch&lt;/a>&lt;/li>
&lt;li>Evenrouter read Kubernetes Events and prints them as JSON on stdout (other destinations are not supported): &lt;a href="https://github.com/openshift/eventrouter">https://github.com/openshift/eventrouter&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>