<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes on Nicole van der Hoeven</title><link>https://nicolevanderhoeven.com/tags/kubernetes/</link><description>Recent content in Kubernetes on Nicole van der Hoeven</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Nicole van der Hoeven</copyright><lastBuildDate>Thu, 30 Jul 2026 09:00:00 +0900</lastBuildDate><atom:link href="https://nicolevanderhoeven.com/tags/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>Spice Runner</title><link>https://nicolevanderhoeven.com/projects/spice-runner/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://nicolevanderhoeven.com/projects/spice-runner/</guid><description>&lt;p&gt;&lt;strong&gt;Spice Runner&lt;/strong&gt; is a browser-based endless runner. Think of the &amp;ldquo;unable to connect&amp;rdquo; dinosaur game in Chrome, except you are a Fremen running across the sands of Arrakis, jumping sandworms and Harkonnen ornithopters. It&amp;rsquo;s the demo app for my talk &lt;a href="https://nicolevanderhoeven.com/blog/20251105-the-spice-must-flow/"&gt;&lt;em&gt;The Spice Must Flow: The Fremen Guide to Sustainable Observability&lt;/em&gt;&lt;/a&gt;, and it exists to make one point: even a simple, throwaway game generates a surprising amount of telemetry, and that telemetry has real financial and environmental costs.&lt;/p&gt;
&lt;p&gt;The Fremen live on a planet that is rich in spice and poor in water, and they thrive by wasting nothing. Our systems are rich in telemetry and poor in budget, and in carbon. Spice Runner is a small, playable version of that problem: a real app, with real players, running on real infrastructure that scales up and down with them while I watch what it costs.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/projects/spice-runner-gameplay.gif" alt="Spice Runner gameplay: a Fremen runner jumps sandworms as an ornithopter flies overhead" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="what-it-demonstrates"&gt;What it demonstrates&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Real user monitoring with &lt;a href="https://grafana.com/oss/faro/"&gt;Grafana Faro&lt;/a&gt;.&lt;/strong&gt; Game sessions, game starts, scores, collisions, restarts, and game overs are all sent as custom events, so the dashboard shows how people actually play.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A leaderboard that&amp;rsquo;s instrumented end to end.&lt;/strong&gt; A Go API backed by PostgreSQL and Redis serves a public top-10 leaderboard. It&amp;rsquo;s instrumented with OpenTelemetry for traces and custom metrics, so a score can be followed from the browser through the API to the database and the cache.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metrics, logs, and traces on Kubernetes.&lt;/strong&gt; Prometheus, Grafana Loki, and Grafana Tempo run in the cluster, with Grafana Alloy as the collector and Grafana for dashboards. Telemetry is also sent to Grafana Cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoscaling that follows the players.&lt;/strong&gt; &lt;a href="https://keda.sh/"&gt;KEDA&lt;/a&gt; scales the game&amp;rsquo;s pods on HTTP request rate, CPU, and memory, and the GKE Cluster Autoscaler adds and removes nodes behind them. Production settings keep at least one pod running and cap it at 20, with a separate demo profile that is far more eager for live demonstrations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Energy monitoring with &lt;a href="https://sustainable-computing.io/"&gt;Kepler&lt;/a&gt;.&lt;/strong&gt; Power and energy use are tracked per workload, so &amp;ldquo;what does this cost the planet?&amp;rdquo; is a query rather than a guess.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Load testing with &lt;a href="https://k6.io"&gt;k6&lt;/a&gt;.&lt;/strong&gt; k6 drives load against the leaderboard API and, with a browser script, plays the game to keep the dashboard populated.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-dashboard"&gt;The dashboard&lt;/h2&gt;
&lt;p&gt;The live dashboard on Grafana Play shows real player data as it happens. The dashboard is also entirely AI-generated: it was built with &lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/assistant/"&gt;Grafana Assistant&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://nicole.to/spicedashboard"&gt;Open the live dashboard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;
&lt;p&gt;The app has two layers. The first is the game and its leaderboard: a vanilla JavaScript game served by Nginx, with a Go leaderboard API backed by PostgreSQL and Redis. The second is the observability stack: Faro instruments the browser, and the Nginx exporter, Alloy, Loki, Tempo, and Prometheus cover the backend. Everything runs on Google Kubernetes Engine, with persistent volumes so telemetry survives pod restarts, and autoscalers at both the pod and node level.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/projects/spice-runner-architecture.png" alt="Spice Runner architecture: the game and leaderboard, the observability stack, and the autoscalers" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="the-talk"&gt;The talk&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;The Spice Must Flow&lt;/em&gt; uses Dune as its framing. It covers the hidden environmental and financial costs of an observability stack, how hard it is to measure the cost of ephemeral resources on Kubernetes, how to use KEDA to right-size resources when you don&amp;rsquo;t know what the right size is, and the most effective thing you can do to cut cost: deleting the telemetry you don&amp;rsquo;t need.&lt;/p&gt;
&lt;p&gt;I first gave it at &lt;a href="https://oredev.org/"&gt;Øredev 2025&lt;/a&gt; in Malmö, Sweden. You can read the &lt;a href="https://nicolevanderhoeven.com/blog/20251105-the-spice-must-flow/"&gt;write-up and abstract&lt;/a&gt; and see the &lt;a href="https://nicole.to/spiceslides"&gt;slides&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="run-it-yourself"&gt;Run it yourself&lt;/h2&gt;
&lt;p&gt;Everything you need to deploy it on your own GKE cluster, including the Kubernetes manifests, the dashboards, and the load tests, is in the &lt;a href="https://github.com/nicolevanderhoeven/spice-runner"&gt;GitHub repository&lt;/a&gt;. Its README has a quick start.&lt;/p&gt;</description></item><item><title>The Great Doubt: What Building an AI Agent Taught Us About Trust (KubeCon Japan 2026)</title><link>https://nicolevanderhoeven.com/blog/20260730-the-great-doubt-kubecon-japan/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0900</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-the-great-doubt-kubecon-japan/</guid><description>&lt;p&gt;This week I spoke at &lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-japan/"&gt;KubeCon + CloudNativeCon Japan 2026&lt;/a&gt; in Yokohama, Japan. I gave a talk called &lt;em&gt;The Great Doubt: What Building an AI Agent Taught Us About Trust&lt;/em&gt;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When we started building an AI assistant for observability, we thought the hard part would be making it smart. We were wrong. The hard part was knowing when to trust it.&lt;/p&gt;
&lt;p&gt;AI agents hallucinate, forget context, and confidently give wrong answers. Traditional testing doesn&amp;rsquo;t catch these failures. What&amp;rsquo;s needed is evaluation grounded in systematic doubt.&lt;/p&gt;
&lt;p&gt;This talk shares lessons from shipping an AI agent to production: how to build a golden dataset of use cases you must get right, how to use LLM-as-judge when there&amp;rsquo;s no ground truth, and how to use OpenTelemetry traces to debug eval failures. You&amp;rsquo;ll also hear what&amp;rsquo;s still unsolved: evaluating multi-agent handoffs and closing the feedback loop between what users ask and what your evals cover.&lt;/p&gt;
&lt;p&gt;Kyoto School philosopher Nishitani Keiji called this &amp;ldquo;The Great Doubt&amp;rdquo; (大疑): questioning every assumption until only what survives is real. For AI agents, that&amp;rsquo;s not philosophy. It&amp;rsquo;s the job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The talk walks through the layers of doubt we worked through while building &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;: doubting the agent itself, then doubting our tests, then the LLM-as-judge, then our own scores — and finally doubting whether the doubt was even justified. Each layer needed a different tool, from a golden dataset run in a fully synthetic observability environment, through online evals on live traffic, to per-conversation OpenTelemetry traces that link every eval score back to the exact LLM and tool calls that produced it.&lt;/p&gt;
&lt;p&gt;You can find the slides at &lt;a href="https://nicole.to/doubtslides"&gt;nicole.to/doubtslides&lt;/a&gt;, and you can watch the full talk below:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uW9Hlp3fT14?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;p&gt;Grafana Assistant (generally available for Grafana OSS, Grafana Cloud, and Grafana Play):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/assistant/"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.grafana.org"&gt;Try it out on Grafana Play&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Assistant Investigations (Grafana Cloud):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/investigations"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent Observability (Grafana Cloud):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/agento11y"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;o11y-bench (OSS):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/o11ybench"&gt;Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Investigations Arena:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/YPfqchw8LCo"&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="related-reading"&gt;Related reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My Context Horizon piece &lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;&lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4vZNlPD"&gt;&lt;em&gt;The Way of Zen&lt;/em&gt;&lt;/a&gt; by Alan W. Watts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/3RgXGIP"&gt;&lt;em&gt;Zen Mind, Beginner&amp;rsquo;s Mind&lt;/em&gt;&lt;/a&gt; by Shunryu Suzuki&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4vQW2eQ"&gt;&lt;em&gt;Religion and Nothingness, Volume 1&lt;/em&gt;&lt;/a&gt; by Nishitani Keiji&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4yFff6d"&gt;&lt;em&gt;Philosophers of Nothingness: An Essay on the Kyoto School&lt;/em&gt;&lt;/a&gt; by James W. Heisig&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>The Spice Must Flow: The Fremen Guide to Sustainable Observability (Øredev 2025)</title><link>https://nicolevanderhoeven.com/blog/20251105-the-spice-must-flow/</link><pubDate>Wed, 05 Nov 2025 03:07:38 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20251105-the-spice-must-flow/</guid><description>&lt;p&gt;Today I gave a talk at &lt;a href="https://oredev.org/"&gt;Øredev 2025&lt;/a&gt; in Malmö, Sweden, titled +The Spice Must Flow: The Fremen Guide to Sustainable Observability&amp;quot;_. The presentation focused on how to implement sustainable observability practices using open-source tools like Grafana, Prometheus, Loki, Tempo, KEDA, and Kepler. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nobody wants to be wasteful. But how do you balance that with the need for enough data to fix things when they go wrong? After all, no matter how much it costs, there are SLOs to keep. The spice&amp;ndash; the telemetry&amp;ndash; must flow.&lt;/p&gt;
&lt;p&gt;The Fremen are a people who live on the planet Arrakis, simultaneously rich in spice while poor in water. But the Fremen have managed to thrive, not just survive, on very little while continuing to produce spice. What would it take to apply this &amp;ldquo;desert planet thinking&amp;rdquo; to observability?&lt;/p&gt;
&lt;p&gt;In this talk, you&amp;rsquo;ll learn about the hidden environmental and financial costs of your observability stack and how to reduce them. You&amp;rsquo;ll learn about the complications of measuring cost for ephemeral resources on Kubernetes, how to use KEDA to &amp;ldquo;right-size&amp;rdquo; resources when you don&amp;rsquo;t know what the right size is, and how to convince your teams to drop all but the most meaningful telemetry data. In the end, the spice must flow, but there must still be enough water to sustain all.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here are some resources mentioned in the talk:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can play the game Spice Runner &lt;a href="https://nicole.to/spicegame"&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/spicerepo"&gt;The spice-runner repo&lt;/a&gt; containing everything you need to know about how to deploy it yourself&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/spiceslides"&gt;The slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/spicedashboard"&gt;The Spice Runner dashboard&lt;/a&gt; for observing the application&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/projects/spice-runner/"&gt;More about Spice Runner&lt;/a&gt;: architecture, tech stack, and what it demonstrates&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/2025-11-05-oredev.JPG" alt="Photo of me at Øredev 2025" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>Deploying Loki on Kubernetes via Helm (Loki Community Call October 2025)</title><link>https://nicolevanderhoeven.com/blog/20251029-lcc-deploying-loki-on-kubernetes-via-helm/</link><pubDate>Wed, 29 Oct 2025 18:04:30 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20251029-lcc-deploying-loki-on-kubernetes-via-helm/</guid><description>&lt;p&gt;This Loki Community Call is about deploying Loki on Kubernetes via Helm charts. We talk about why you might want to use Helm to deploy on Kubernetes, best practices for deployment, and which Helm chart you should use! We are Jay Clifford and Nicole van der Hoeven, Developer Advocates at Grafana Labs, and we have invited Grafana Champion and Loki Helm Maintainer Jan-Otto Kröpke, Principal Cloud Architect at QualityOperations GmbH, to talk about the state of the Loki Helm Chart.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZqumpIXutXg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>All about OTel and Logging on Kubernetes with Loki (Loki Community Call April 2025)</title><link>https://nicolevanderhoeven.com/blog/20250425-lcc-all-about-otel-and-logging-on-kubernetes-with-loki/</link><pubDate>Fri, 25 Apr 2025 17:57:58 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20250425-lcc-all-about-otel-and-logging-on-kubernetes-with-loki/</guid><description>&lt;p&gt;In this pre-recorded Loki Community Call, we talk all about OTel and logging on Kubernetes with Cyril Tovena, Ward Bekker, Jay Clifford, and Nicole van der Hoeven at KubeCon EU 2025 in London. We discuss when why you should switch to OTel and why you shouldn&amp;rsquo;t, what OTLP is exactly, and best practices for ingesting data through an OTLP endpoint.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/27ZHOg-LaM0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Run Loki at Scale on Kubernetes (Loki Community Call January 2025)</title><link>https://nicolevanderhoeven.com/blog/20250123-lcc-how-to-run-loki-at-scale-on-kubernetes/</link><pubDate>Thu, 23 Jan 2025 17:51:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20250123-lcc-how-to-run-loki-at-scale-on-kubernetes/</guid><description>&lt;p&gt;Happy New Year from the Loki Engineering team. To kick off 2025, Nicole and Jay will be joined by Poyzan Taneli from the Loki Engineering team to discuss how to run Loki at scale on Kubernetes. If you are currently running Loki in microservices mode or preparing to do so, we will be discussing best practices for scaling its components to meet the demands of production use cases.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How many Ingesters vs Queriers do I need?&lt;/li&gt;
&lt;li&gt;What is the minimum cost of running Loki as a production cluster?&lt;/li&gt;
&lt;li&gt;What is the average node size for running Loki?
How do I monitor my Loki deployment?&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/lAr0GwuZHiw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Deploy Grafana Beyla on Kubernetes as a Sidecar Container</title><link>https://nicolevanderhoeven.com/blog/20240109-how-to-deploy-grafana-beyla-on-kubernetes-as-a-sidecar-container/</link><pubDate>Tue, 09 Jan 2024 13:41:38 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240109-how-to-deploy-grafana-beyla-on-kubernetes-as-a-sidecar-container/</guid><description>&lt;p&gt;Principal Staff Engineer Nikola Grčevski demonstrates how to deploy Grafana Beyla on Kubernetes as a sidecar container. Grafana Beyla is an eBPF auto-instrumentation tool for application observability: you just have to tell it what to listen to, give it permissions, and deploy it&amp;ndash; and you can see metrics and logs from that component or service without having to do any manual instrumentation.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/d7clTdz0bA4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/beyla/latest/setup/kubernetes/"&gt;Instructions for deploying Grafana Beyla on Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/beyla"&gt;Grafana Beyla on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Load Testing on Kubernetes with k6 Private Load Zones (Grafana Office Hours #19)</title><link>https://nicolevanderhoeven.com/blog/20231110-goh19-load-testing-on-kubernetes-with-k6-private-load-zones/</link><pubDate>Fri, 10 Nov 2023 10:46:48 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231110-goh19-load-testing-on-kubernetes-with-k6-private-load-zones/</guid><description>&lt;p&gt;This week, we&amp;rsquo;re talking about how you can do load testing on Kubernetes with k6 Private Load Zones, a new feature on Grafana Cloud k6 that leverages the k6 Kubernetes operator to allow you to run distributed load tests against applications behind a firewall. Here to discuss this new feature are Senior Software Engineer Olha Yevtushenko, Product Manager Daniel González Lopes, Developer Advocate Paul Balogh, and Senior Developer Advocate Nicole van der Hoeven.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/RXLavQT58YA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="related-links"&gt;Related links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/k6"&gt;The Grafana k6 repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/k6-operator"&gt;k6 operator repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/k6/author-run/private-load-zone-v2/"&gt;Docs on Private Load Zones in Grafana Cloud k6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to Deploy Grafana on Kubernetes (Grafana Office Hours #13)</title><link>https://nicolevanderhoeven.com/blog/20230929-goh13-how-to-deploy-grafana-on-kubernetes/</link><pubDate>Fri, 29 Sep 2023 17:30:49 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20230929-goh13-how-to-deploy-grafana-on-kubernetes/</guid><description>&lt;p&gt;My coworker Usman Ahmad and I talk about how to deploy Grafana on Kubernetes for beginners: what Kubernetes is, how it&amp;rsquo;s an evolution of distributed computing, what its relationship to Docker is, other things you might need to know to work with Kubernetes, and how you can deploy Grafana on your own Kubernetes clusters.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/DEv5wtZxNCk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Documentation on how to deploy Grafana on Kubernetes &lt;a href="https://grafana.com/docs/grafana/latest/setup-grafana/installation/kubernetes/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Testing Kubernetes Networking With k6 (k6 Office Hours #91)</title><link>https://nicolevanderhoeven.com/blog/20230616-koh91-testing-kubernetes-networking-with-k6/</link><pubDate>Fri, 16 Jun 2023 13:00:50 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20230616-koh91-testing-kubernetes-networking-with-k6/</guid><description>&lt;p&gt;How would you go about testing Kubernetes networking? For his initial project with k6, our new Senior Software Engineer, Roberto Santalla, talks to us about how he used k6 to improve end-to-end network throughput and some insights he learned about Kubernetes networking along the way. I also invited my colleague, Leandro Melendez, to help me interview Roberto.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/DryiirlkKIo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Avoid the Most Common Kubernetes Monitoring Mistakes</title><link>https://nicolevanderhoeven.com/blog/20230516-how-to-avoid-the-most-common-kubernetes-monitoring-mistakes/</link><pubDate>Tue, 16 May 2023 22:41:16 +1000</pubDate><guid>https://nicolevanderhoeven.com/blog/20230516-how-to-avoid-the-most-common-kubernetes-monitoring-mistakes/</guid><description>&lt;p&gt;For &lt;a href="https://grafana.com/about/events/observabilitycon/2023/singapore/"&gt;ObservabilityCON on the Road Singapore 2023&lt;/a&gt;, I talked about some mistakes people make when monitoring applications within Kubernetes clusters. I also demonstrated Grafana&amp;rsquo;s Kubernetes Monitoring solution and how it can be a shortcut for engineers looking to get started quickly.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/ocr-2023-sin-01.jpg" alt="Photo of me speaking at OCR Singapore 2023" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/presentation/d/1rC8kifF6X1ZSH8jgh-yUp6NfgK_UaLiOG8TWLa5dQBQ/edit?usp=sharing"&gt;Slides here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Monitoring+Kubernetes"&gt;Monitoring Kubernetes in general&lt;/a&gt; (notes)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Kubernetes+Monitoring"&gt;The Grafana Kubernetes Monitoring feature&lt;/a&gt; (notes)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/ocr-2023-sin-02.jpg" alt="Photo of the crowd at OCR Singapore 2023" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>Emergent Load Testing - rules for organized chaos</title><link>https://nicolevanderhoeven.com/blog/20230419-emergent-load-testing/</link><pubDate>Wed, 19 Apr 2023 00:21:06 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20230419-emergent-load-testing/</guid><description>&lt;p&gt;Today I spoke at &lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/schedule/"&gt;KubeCon EU 2023&lt;/a&gt; about &lt;a href="https://sched.co/1HyYH"&gt;emergent load testing&lt;/a&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Og4-Z6j_0M0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/img_3556.jpg" alt="Me just before the presentation, with the opening slide on the screen behind me." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://slides.nicolevanderhoeven.com/2023-emergent-load-testing/#"&gt;Here are the slides&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Below are some links to extensions and experimental modules that I mentioned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/"&gt;Grafana&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://k6.io/"&gt;k6 site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/k6"&gt;k6 repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://k6.io/docs/"&gt;k6 docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://k6.io/docs/using-k6-browser/overview/"&gt;k6 browser&lt;/a&gt; (experimental module)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://k6.io/docs/results-output/real-time/prometheus-remote-write/"&gt;Prometheus Remote Write&lt;/a&gt; (experimental module)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://k6.io/docs/javascript-api/k6-experimental/tracing/"&gt;k6 tracing&lt;/a&gt; (experimental module)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/xk6-kubernetes"&gt;xk6-kubernetes&lt;/a&gt; (extension)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://k6.io/docs/javascript-api/k6-experimental/redis/"&gt;k6 redis&lt;/a&gt; (experimental module)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/xk6-disruptor"&gt;xk6 disruptor&lt;/a&gt; (extension)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/img_3560-1.jpg" alt="Me presenting, with a slide containing my definition of emergence on the screen" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="abstract"&gt;Abstract&lt;/h2&gt;
&lt;p&gt;When we write load testing scripts against our applications, we write them sequentially: A, then B, then C. But this doesn&amp;rsquo;t accurately reflect the organized chaos of a system in production, nor does it prepare the system for the unexpected.&lt;/p&gt;
&lt;p&gt;Emergence is a phenomenon where parts of a whole independently develop properties not originally present in the whole. Emergence is what helps ant workers develop roles without leadership, prompts animals to evolve adaptive traits without forethought, and facilitates non-toxic communities without moderators.&lt;/p&gt;
&lt;p&gt;The growing field of emergent software applies this swarm logic to the programs that we write. What would it take to write emergent load testing scripts? It turns out that there are a few ingredients for emergence: a large population size, opportunities to interact, feedback, and an element of control.&lt;/p&gt;
&lt;p&gt;In this talk, Nicole van der Hoeven discusses how to bring these elements to load testing by writing a script in Grafana k6 that can independently decide what requests to make next, modify Kubernetes app pods, and disrupt services based on a continual feed of results during runtime&amp;ndash; all without manual intervention. She shows how to wield this new breed of load testing to improve confidence in the complex systems we build.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/img_3558.jpg" alt="Photo of the room while I was presenting" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>Distributed Load Testing Using Kubernetes With k6</title><link>https://nicolevanderhoeven.com/blog/20221118-koh72-distributed-load-testing-using-kubernetes-with-k6/</link><pubDate>Sun, 18 Dec 2022 15:54:07 +0000</pubDate><guid>https://nicolevanderhoeven.com/blog/20221118-koh72-distributed-load-testing-using-kubernetes-with-k6/</guid><description>&lt;p&gt;My colleague Paul Balogh and I demonstrate how to run distributed load testing using Kubernetes with k6 and k6 operator. k6 can already run up to 40,000 virtual users from a single load generator, but if you want to scale that up further, you can use the Kubernetes operator to create a k6 custom resource within your cluster.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5d5zxsGz8L4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Why Is Everyone Talking About Chaos Engineering? (k6 Office Hours #56)</title><link>https://nicolevanderhoeven.com/blog/20220715-koh56-why-is-everyone-talking-about-chaos-engineering/</link><pubDate>Fri, 15 Jul 2022 18:00:13 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220715-koh56-why-is-everyone-talking-about-chaos-engineering/</guid><description>&lt;p&gt;Why is everyone talking about chaos engineering anyway? How different is it from testing? What does it have to do with performance? In this k6 Office Hours, k6 Technical Program Manager Vince Huang joins me and my colleague, Paul Balogh, to talk about these topics and more.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GXEB2LZ4wfw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to migrate to Kubernetes, with Carlos Ruiz Lantero (k6 Office Hours #55)</title><link>https://nicolevanderhoeven.com/blog/20220708-koh55-how-to-migrate-to-kubernetes/</link><pubDate>Fri, 08 Jul 2022 17:00:57 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220708-koh55-how-to-migrate-to-kubernetes/</guid><description>&lt;p&gt;k6 Cloud Backend developer Carlos Ruiz Lantero joins Developer Advocates Nicole van der Hoeven and Paul Balogh to discuss how to migrate to Kubernetes. Carlos has been working on migrating k6 Cloud services from ECS to EKS, and in this video, he shares his best practices for migration and things he wishes he&amp;rsquo;d done differently.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/wPX0QP45Yo4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Make Kubernetes Clusters Production Ready using Crossplane, with Viktor Farcic (k6 Office Hours #46)</title><link>https://nicolevanderhoeven.com/blog/20220318-koh46-how-to-make-kubernetes-clusters-production-ready-with-crossplane/</link><pubDate>Fri, 18 Mar 2022 17:30:45 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220318-koh46-how-to-make-kubernetes-clusters-production-ready-with-crossplane/</guid><description>&lt;p&gt;In this video, Viktor Farcic, Paul Balogh and I talk about how to make Kubernetes clusters production-ready. Viktor is a Developer Advocate from &lt;a href="https://www.upbound.io/"&gt;Upbound&lt;/a&gt;, and he demonstrates a solution that ties together &lt;a href="https://crossplane.io"&gt;Crossplane&lt;/a&gt;, &lt;a href="https://grafana.com"&gt;Grafana&lt;/a&gt;, &lt;a href="https://prometheus.io"&gt;Prometheus&lt;/a&gt;, and &lt;a href="https://grafana.com/oss/loki/"&gt;Loki&lt;/a&gt; to deploy and manage clusters in production.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/cPVrCNhHo7Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Monitoring your k6 load test: how to install Grafana and Prometheus on a Kubernetes cluster</title><link>https://nicolevanderhoeven.com/blog/20210811-how-to-install-grafana-prometheus-in-kubernetes/</link><pubDate>Wed, 11 Aug 2021 18:55:49 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20210811-how-to-install-grafana-prometheus-in-kubernetes/</guid><description>&lt;p&gt;Running a load test is half of the equation, and not having the right observability tools to see how your application responds to the load can sometimes flat-out invalidate a test.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how to install open-source tools Grafana and Prometheus on a Kubernetes cluster in DigitalOcean and how a performance user could use them for increased visibility during a load test.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GL2v81xYuAQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to get started with chaos engineering (k6 Office Hours)</title><link>https://nicolevanderhoeven.com/blog/20210430-koh-pokemon/</link><pubDate>Fri, 30 Apr 2021 21:53:09 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20210430-koh-pokemon/</guid><description>&lt;p&gt;Recently, I&amp;rsquo;ve been learning more about chaos engineering. In this week&amp;rsquo;s k6 Office Hours, I shared my experience as a tester getting started with Kubernetes, chaos engineering with &lt;a href="https://github.com/simskij/xk6-chaos"&gt;xk6-chaos&lt;/a&gt; and k6, and observability with &lt;a href="https://newrelic.com"&gt;New Relic&lt;/a&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/gVwJZPo30rk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Testing Kubernetes and infrastructure as code with Sid Palas (k6 Office Hours)</title><link>https://nicolevanderhoeven.com/blog/20210409-koh-sid/</link><pubDate>Fri, 09 Apr 2021 21:53:09 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20210409-koh-sid/</guid><description>&lt;p&gt;For this week&amp;rsquo;s k6 Office Hours, &lt;a href="https://simme.dev"&gt;Simme&lt;/a&gt; and I had &lt;a href="https://twitter.com/sidpalas"&gt;Sid Palas&lt;/a&gt; from &lt;a href="https://www.youtube.com/channel/UC4MdpjzjPuop_qWNAvR23JA"&gt;DevOps Directive&lt;/a&gt; come on board to talk about what Kubernetes is, how it relates to Infrastructure as Code, and why either of those should matter to testers.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/bYdDRZqRSHA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item></channel></rss>