<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>workload-resizer</title><link>https://gke-demos.github.io/workload-resizer/</link><description>Recent content on workload-resizer</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://gke-demos.github.io/workload-resizer/index.xml" rel="self" type="application/rss+xml"/><item><title>Install</title><link>https://gke-demos.github.io/workload-resizer/docs/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gke-demos.github.io/workload-resizer/docs/install/</guid><description>&lt;p&gt;&lt;code&gt;workload-resizer&lt;/code&gt; ships as two manifests on each GitHub Release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;install.yaml&lt;/code&gt;&lt;/strong&gt; — controller Deployment, RBAC, and the
&lt;code&gt;workload-resizer-system&lt;/code&gt; namespace, with the image pinned to the
release tag.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;config.yaml&lt;/code&gt;&lt;/strong&gt; — a sample &lt;code&gt;ConfigMap&lt;/code&gt; with the schema and example
GKE node-type performance units.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both are needed. &lt;strong&gt;Apply &lt;code&gt;config.yaml&lt;/code&gt; first&lt;/strong&gt; — it carries the
&lt;code&gt;workload-resizer-system&lt;/code&gt; namespace and the required ConfigMap, so
the controller pod (created by &lt;code&gt;install.yaml&lt;/code&gt;) finds what it needs
already in place. Reverse the order and the controller pod fails
fast on startup (manager exits with &lt;code&gt;initial config load: configmaps ... not found&lt;/code&gt;, kubelet drops it into &lt;code&gt;CrashLoopBackOff&lt;/code&gt;); it&amp;rsquo;ll
recover once the ConfigMap is applied, but only after the kubelet&amp;rsquo;s
restart backoff. Once the ConfigMap exists at runtime and is later
deleted, the controller keeps using the last-known config and logs
the refresh failure every 30s (&lt;code&gt;--config-refresh-interval&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>How it works</title><link>https://gke-demos.github.io/workload-resizer/docs/how-it-works/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gke-demos.github.io/workload-resizer/docs/how-it-works/</guid><description>&lt;h2 id="the-problem"&gt;The problem&lt;/h2&gt;
&lt;p&gt;Deployment authors set CPU / memory requests calibrated for a specific machine family. When the cluster has a heterogeneous node pool — say &lt;code&gt;n2d&lt;/code&gt; alongside the newer, ~25% more powerful &lt;code&gt;n4&lt;/code&gt; — pods that land on the more powerful nodes over-provision their requests for the actual work being done. The classic fix is the Vertical Pod Autoscaler, but VPA recreates pods and reasons about utilization over time. &lt;code&gt;workload-resizer&lt;/code&gt; does something narrower: when a pod is scheduled, look at where it landed and patch its requests &lt;strong&gt;right there&lt;/strong&gt;, with a known performance-unit ratio, no restart.&lt;/p&gt;</description></item></channel></rss>