<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Runtime Zero</title>
  <subtitle>Field notes on VMware technology, Kubernetes, industry trends and other things</subtitle>
  <link href="https://runtimezero.eu/feed.xml" rel="self"/>
  <link href="https://runtimezero.eu/"/>
  <id>https://runtimezero.eu/</id>
  <author><name>Runtime Zero</name></author>
  <updated>2026-08-20T00:00:00.000Z</updated>
  <entry>
    <title>Enabling Pod Monitoring on VKS Clusters via the VCF Operations API</title>
    <link href="https://runtimezero.eu/posts/enable-pod-monitoring-in-vcf-operations-api/"/>
    <id>https://runtimezero.eu/posts/enable-pod-monitoring-in-vcf-operations-api/</id>
    <published>2026-08-20T00:00:00.000Z</published>
    <updated>2026-08-20T00:00:00.000Z</updated>
    <summary>VCF Operations 9.1 can toggle Pod Monitoring for VKS clusters from the UI, but the API field behind that toggle isn&#39;t documented anywhere. Here&#39;s how it is flipped via the REST API, and wrapped into a reusable Python script.</summary>
    <content type="html">&lt;h2&gt;Automatic observability of VKS Clusters in VCF Operations&lt;/h2&gt;
&lt;p&gt;Part of the VKS addon catalog are Prometheus and Telegraf. In the past, to enable the metrics collection (and shipping to VCF Operations) those had to be installed manually. An excellent guide on how to do this can be found here: &lt;a href=&quot;https://vrealize.it/2025/10/24/monitoring-vks-clusters-in-vcf-operations/&quot;&gt;Monitoring VKS Clusters in VCF Operations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With the introduction of VCF 9.1 the platform is using the new addon management framework to automate the installation of the required packages similar to how Cluster Autoscaler installation is handled. For all new VKS clusters, this is enabled by default - no extra steps necessary. Here is an example of the annotations that get added by the system:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://runtimezero.eu/assets/images/posts/03-enable-pod-monitoring-in-vcf-operations-api/vks-cluster-monitoring-annotations.png&quot; alt=&quot;VKS cluster with automatic monitoring enabled&quot;&gt;&lt;/p&gt;
&lt;p&gt;If for some reason you don&#39;t want that, you can set the annotation to disabled. The official documentation provides more detail on the behaviour: &lt;a href=&quot;https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vcf-consumption/latest/managing-vsphere-kuberenetes-service-clusters-and-workloads/operating-tkg-service-clusters/monitoring-vks-clusters-using-vcf-operations.html&quot;&gt;Monitoring VKS Clusters Using VCF Operations&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Motivation&lt;/h2&gt;
&lt;p&gt;By default data is aggregated at the node/cluster level and namespace, deployment and replicaset level as well, as can be seen in this example:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://runtimezero.eu/assets/images/posts/03-enable-pod-monitoring-in-vcf-operations-api/out-of-the-box-metrics.png&quot; alt=&quot;Out of the box available metrics&quot;&gt;&lt;/p&gt;
&lt;p&gt;Actual pod and container metrics are not enabled by default. This makes sense - pod/container data is often short-lived due to their ephemeral nature. But sometimes this level of detail is necessary. VCF Operations 9.1 lets you toggle &lt;strong&gt;Pod Monitoring&lt;/strong&gt; for a VKS (vSphere Kubernetes Service) cluster from the UI, once that cluster has been added to the system.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://runtimezero.eu/assets/images/posts/03-enable-pod-monitoring-in-vcf-operations-api/enable-pod-monitoring-ui.png&quot; alt=&quot;Enable pod monitoring in the UI&quot;&gt;&lt;/p&gt;
&lt;p&gt;Since this is a manual UI task, I wanted to find out the API way to do this, in preparation for further automation down the line - like toggle this setting right from within VCF Automation.&lt;/p&gt;
&lt;p&gt;VCF Operations exposes a REST API endpoint called &lt;code&gt;suite-api&lt;/code&gt; - this is the same, officially supported integration API documented at &lt;a href=&quot;https://developer.broadcom.com/xapis/vcf-operations-api/latest/&quot;&gt;developer.broadcom.com/xapis/vcf-operations-api&lt;/a&gt;, and it&#39;s also self-hosted on every appliance at:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://&amp;lt;vcf-ops-host&amp;gt;/suite-api/docs/rest/index.html
https://&amp;lt;vcf-ops-host&amp;gt;/suite-api/doc/swagger-ui.html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The built-in Swagger UI makes it especially easy to try out the API and start experimenting. What is &lt;em&gt;not&lt;/em&gt; spelled out anywhere in the docs is which field controls pod monitoring for a VKS cluster. That part had to be reverse-engineered from the live resource model.&lt;/p&gt;
&lt;h2&gt;Step 1 - Authenticate&lt;/h2&gt;
&lt;p&gt;Every call needs a bearer token from &lt;code&gt;/api/auth/token/acquire&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-sk&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-X&lt;/span&gt; POST https://&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;vcf-ops-host&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;/suite-api/api/auth/token/acquire &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Content-Type: application/json&quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Accept: application/json&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;{&quot;username&quot;:&quot;&amp;lt;username&gt;&quot;,&quot;password&quot;:&quot;&amp;lt;password&gt;&quot;}&#39;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Response:&lt;/p&gt;
&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;token&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;978f65d0-...::f3b9b83c-...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;validity&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;...&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;expiresAt&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;roles&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Send it back as a header on every subsequent request:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Authorization: OpsToken &amp;lt;token&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Step 2 - Find the adapter kind that owns Kubernetes objects&lt;/h2&gt;
&lt;p&gt;VCF Operations models everything as &lt;strong&gt;adapter kinds&lt;/strong&gt; -&amp;gt; &lt;strong&gt;resource kinds&lt;/strong&gt; -&amp;gt; &lt;strong&gt;resources&lt;/strong&gt;. To find where VKS clusters live, list adapter kinds and look for one whose
resource kinds mention Kubernetes objects:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-sk&lt;/span&gt; https://&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;host&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;/suite-api/api/adapterkinds &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Authorization: OpsToken &lt;span class=&quot;token variable&quot;&gt;$TOKEN&lt;/span&gt;&quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Accept: application/json&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The adapter kind &lt;code&gt;SupervisorAdapter&lt;/code&gt; (&amp;quot;vSphere Supervisor&amp;quot;) turned up with resource kinds including &lt;code&gt;GuestCluster&lt;/code&gt;, &lt;code&gt;SupervisorCluster&lt;/code&gt;, &lt;code&gt;KubernetesPod&lt;/code&gt;, &lt;code&gt;KubernetesNamespace&lt;/code&gt;, etc. &lt;code&gt;GuestCluster&lt;/code&gt; is what the UI labels &lt;strong&gt;VKS Cluster&lt;/strong&gt; - confirmed by describing it:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-sk&lt;/span&gt; https://&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;host&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;/suite-api/api/adapterkinds/SupervisorAdapter/resourcekinds/GuestCluster &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Authorization: OpsToken &lt;span class=&quot;token variable&quot;&gt;$TOKEN&lt;/span&gt;&quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Accept: application/json&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;POD_CONTAINER_MONITORING&lt;/code&gt; immediately stands out - that&#39;s the field the &amp;quot;Enable Pod Monitoring&amp;quot; toggle in the UI is writing to.&lt;/p&gt;
&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;&quot;key&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;GuestCluster&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;VKS Cluster&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;&quot;adapterKind&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SupervisorAdapter&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;&quot;resourceIdentifierTypes&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;GUEST_CLUSTER_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;MONITORING_ENABLED&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;mark class=&quot;highlight-line highlight-line-active&quot;&gt;    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;POD_CONTAINER_MONITORING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/mark&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SUPERVISOR_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;VC_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Listing actual &lt;code&gt;GuestCluster&lt;/code&gt; resources across several VKS clusters confirmed it: clusters with pod monitoring enabled in the UI had &lt;code&gt;POD_CONTAINER_MONITORING = &amp;quot;true&amp;quot;&lt;/code&gt;, and the one cluster with it turned off had &lt;code&gt;&amp;quot;false&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-sk&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://&amp;lt;host&gt;/suite-api/api/resources?resourceKind=GuestCluster&amp;amp;adapterKind=SupervisorAdapter&amp;amp;name=metrics-test&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Authorization: OpsToken &lt;span class=&quot;token variable&quot;&gt;$TOKEN&lt;/span&gt;&quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Accept: application/json&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is a response for one cluster (with some data trimmed out that is noise for our purposes):&lt;/p&gt;
&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;resourceList&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;resourceKey&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;metrics-test&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;adapterKindKey&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SupervisorAdapter&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;resourceKindKey&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;GuestCluster&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;resourceIdentifiers&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;GUEST_CLUSTER_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;b6cc361b-a0d3-4757-8d77-7a7977be9f75&quot;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;MONITORING_ENABLED&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;true&quot;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;POD_CONTAINER_MONITORING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;false&quot;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SUPERVISOR_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;6e227f64-7211-48c5-b201-1e25ce19678e&quot;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;VC_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;f7839017-1f73-4122-b27c-3ed8450729e6&quot;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;identifier&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;38ff122b-8776-4d70-8b3c-fac80c9825c3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;links&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;href&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;/suite-api/api/resources/38ff122b-8776-4d70-8b3c-fac80c9825c3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;rel&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SELF&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;linkToSelf&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Worth noting is the &lt;strong&gt;&lt;code&gt;identifier&lt;/code&gt;&lt;/strong&gt; (top-level, &lt;code&gt;38ff122b-8776-4d70-8b3c-fac80c9825c3&lt;/code&gt;) - the ID needed for the next step.&lt;/p&gt;
&lt;h2&gt;Step 3 - Flip it&lt;/h2&gt;
&lt;p&gt;The write path is &lt;code&gt;PUT /suite-api/api/resources&lt;/code&gt;. The body is the full resource, with the identifier&#39;s value changed, and the resource&#39;s own ID passed in a field literally called &lt;code&gt;identifier&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;highlight-line&quot;&gt;# file&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; update_resource.json&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;&quot;identifier&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;lt;resource-id&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token property&quot;&gt;&quot;resourceKey&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;lt;cluster-name&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;adapterKindKey&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SupervisorAdapter&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;resourceKindKey&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;GuestCluster&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token property&quot;&gt;&quot;resourceIdentifiers&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;GUEST_CLUSTER_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;MONITORING_ENABLED&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;mark class=&quot;highlight-line highlight-line-active&quot;&gt;      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;POD_CONTAINER_MONITORING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/mark&gt;
&lt;span class=&quot;highlight-line&quot;&gt;      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SUPERVISOR_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;identifierType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;VC_UUID&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;dataType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;STRING&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;isPartOfUniqueness&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-sk&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-X&lt;/span&gt; PUT &lt;span class=&quot;token string&quot;&gt;&quot;https://&amp;lt;host&gt;/suite-api/api/resources&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Authorization: OpsToken &lt;span class=&quot;token variable&quot;&gt;$TOKEN&lt;/span&gt;&quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Content-Type: application/json&quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Accept: application/json&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-d&lt;/span&gt; @update_resource.json&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A follow-up &lt;code&gt;GET&lt;/code&gt; on the resource or check in the UI confirmed the change has been applied successfully, with pod and container details now showing up in VCF Operations:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://runtimezero.eu/assets/images/posts/03-enable-pod-monitoring-in-vcf-operations-api/pod-and-container-details-after-enabling.png&quot; alt=&quot;Pod and container details after enabling pod monitoring&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Putting it into a Python script&lt;/h2&gt;
&lt;p&gt;Broadcom put together an official Python SDK for VCF: &lt;strong&gt;&lt;a href=&quot;https://pypi.org/project/vcf-sdk/&quot;&gt;vcf-sdk&lt;/a&gt;&lt;/strong&gt;, a meta-package that pulls in per-product client libraries - &lt;code&gt;vmware-vcenter&lt;/code&gt;, &lt;code&gt;vcf-nsx&lt;/code&gt;, &lt;code&gt;vcf-operations&lt;/code&gt;, etc. The one we need is &lt;code&gt;vcf-operations&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;Since I am not much of a programmer, I utilized the SDK and AI to help me out with putting this together. The code can be found here: &lt;a href=&quot;https://github.com/christschn81/runtimezero-posts-additional-files/tree/main/03-enable-pod-monitoring-in-vcf-operations-api&quot;&gt;Python client&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Install and usage:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;python3 &lt;span class=&quot;token parameter variable&quot;&gt;-m&lt;/span&gt; venv .venv &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;source&lt;/span&gt; .venv/bin/activate
pip &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; vcf-operations&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;9.1&lt;/span&gt;.0.0

&lt;span class=&quot;token comment&quot;&gt;# list clusters and current state&lt;/span&gt;
python3 set_pod_monitoring.py &lt;span class=&quot;token parameter variable&quot;&gt;--host&lt;/span&gt; ops-a.site-a.vcf.lab &lt;span class=&quot;token parameter variable&quot;&gt;--username&lt;/span&gt; admin &lt;span class=&quot;token parameter variable&quot;&gt;--list&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# enable on a named cluster&lt;/span&gt;
python3 set_pod_monitoring.py &lt;span class=&quot;token parameter variable&quot;&gt;--host&lt;/span&gt; ops-a.site-a.vcf.lab &lt;span class=&quot;token parameter variable&quot;&gt;--username&lt;/span&gt; admin &lt;span class=&quot;token parameter variable&quot;&gt;--cluster&lt;/span&gt; bookstore-app &lt;span class=&quot;token parameter variable&quot;&gt;--enable&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# no --cluster given -&gt; interactive picker&lt;/span&gt;
python3 set_pod_monitoring.py &lt;span class=&quot;token parameter variable&quot;&gt;--host&lt;/span&gt; ops-a.site-a.vcf.lab &lt;span class=&quot;token parameter variable&quot;&gt;--username&lt;/span&gt; admin &lt;span class=&quot;token parameter variable&quot;&gt;--enable&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The password is prompted for interactively when &lt;code&gt;--password&lt;/code&gt; is omitted. For unattended runs, set &lt;code&gt;VCF_OPS_PASSWORD&lt;/code&gt; instead of passing it on the command line.&lt;/p&gt;
&lt;p&gt;I ran this end-to-end (list -&amp;gt; enable -&amp;gt; verify -&amp;gt; disable) against a live VCF Operations 9.1 appliance:&lt;/p&gt;
&lt;pre class=&quot;language-shellsession&quot;&gt;&lt;code class=&quot;language-shellsession&quot;&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;python3 set_pod_monitoring.py &lt;span class=&quot;token parameter variable&quot;&gt;--host&lt;/span&gt; ops-a.site-a.vcf.lab &lt;span class=&quot;token parameter variable&quot;&gt;--username&lt;/span&gt; admin &lt;span class=&quot;token parameter variable&quot;&gt;--list&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;NAME                     POD MONITORING
metrics-test             disabled
kubernetes-cluster-93hv  disabled
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;python3 set_pod_monitoring.py &lt;span class=&quot;token parameter variable&quot;&gt;--host&lt;/span&gt; ops-a.site-a.vcf.lab &lt;span class=&quot;token parameter variable&quot;&gt;--username&lt;/span&gt; admin &lt;span class=&quot;token parameter variable&quot;&gt;--cluster&lt;/span&gt; metrics-test &lt;span class=&quot;token parameter variable&quot;&gt;--enable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;metrics-test: pod monitoring enabled
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;python3 set_pod_monitoring.py &lt;span class=&quot;token parameter variable&quot;&gt;--host&lt;/span&gt; ops-a.site-a.vcf.lab &lt;span class=&quot;token parameter variable&quot;&gt;--username&lt;/span&gt; admin &lt;span class=&quot;token parameter variable&quot;&gt;--list&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;NAME                     POD MONITORING
metrics-test             enabled
kubernetes-cluster-93hv  disabled
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;python3 set_pod_monitoring.py &lt;span class=&quot;token parameter variable&quot;&gt;--host&lt;/span&gt; ops-a.site-a.vcf.lab &lt;span class=&quot;token parameter variable&quot;&gt;--username&lt;/span&gt; admin &lt;span class=&quot;token parameter variable&quot;&gt;--cluster&lt;/span&gt; metrics-test &lt;span class=&quot;token parameter variable&quot;&gt;--cluster&lt;/span&gt; kubernetes-cluster-93hv &lt;span class=&quot;token parameter variable&quot;&gt;--disable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;metrics-test: pod monitoring disabled
kubernetes-cluster-93hv: already disabled, skipping
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Wrapping up&lt;/h2&gt;
&lt;p&gt;Pod and container metrics carry a cost - more data points, more storage, more noise - which is why the VCF Operations leaves them off by default. Being able to flip that on and off through the API, rather than only by clicking through the UI, makes it practical to enable the extra detail exactly when it&#39;s needed - chasing down a noisy workload or an OOM-killed pod - and turn it back off once the investigation is done, instead of leaving it running indefinitely out of convenience.&lt;/p&gt;
&lt;p&gt;Next up: I want to do this in VCF Automation, so pod monitoring can be toggled automatically as part of a cluster&#39;s day-2 workflow or deployment.&lt;/p&gt;
</content>
    <category term="Observability"/>
    <category term="VKS"/>
  </entry>
  <entry>
    <title>Configuring Cluster Autoscaler Scan Interval on VKS</title>
    <link href="https://runtimezero.eu/posts/autoscaler-scan-interval-for-vks/"/>
    <id>https://runtimezero.eu/posts/autoscaler-scan-interval-for-vks/</id>
    <published>2026-08-01T00:00:00.000Z</published>
    <updated>2026-08-06T00:00:00.000Z</updated>
    <summary>Cluster Autoscaler ships with VKS out of the box, but tuning its scaling speed isn&#39;t officially documented. Here&#39;s how to configure the scan-interval with proof it actually works.</summary>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update Aug 6 2026:&lt;/strong&gt; verified the setting survives a cluster and addon upgrade — see &lt;a href=&quot;#update-testing-upgrade-workflows&quot;&gt;Testing upgrade workflows&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Cluster Autoscaler in VMware vSphere Kubernetes Service (VKS)&lt;/h2&gt;
&lt;p&gt;Cluster Autoscaler is provided as one of the available and supported addons in VKS. This has been the case for many years and there have been meaningful improvements in how Cluster Autoscaler is implemented and its capabilities. Two of my favorites are &amp;quot;scale-to-zero&amp;quot; and the automatic installation provided by VKS during cluster deployment. VKS also takes care of upgrading Cluster Autoscaler to match the cluster version - pretty neat.&lt;/p&gt;
&lt;h2&gt;Configuring Cluster Autoscaler Behaviour&lt;/h2&gt;
&lt;p&gt;One of my clients asked me if it is possible to influence how Cluster Autoscaler behaves, specifically how quickly scaling happens. The answer was not easily found and is not officially documented (yet).&lt;/p&gt;
&lt;p&gt;First let&#39;s look at what is documented. Cluster Autoscaler provides various configuration parameters to influence its mode of operation. A helpful resource can be found here: &lt;a href=&quot;https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md&quot;&gt;Cluster Autoscaler FAQ&lt;/a&gt;. The parameter to influence scale up speed is determined by the &lt;code&gt;--scan-interval&lt;/code&gt; setting, which should default to 10s if not specified.&lt;/p&gt;
&lt;p&gt;The current state of what can be configured is covered in the &lt;a href=&quot;https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vcf-consumption/latest/managing-vsphere-kuberenetes-service-clusters-and-workloads/autoscaling-tkg-service-clusters.html&quot;&gt;VMware Cloud Foundation Consumption&lt;/a&gt; documentation. VKS is using &lt;a href=&quot;https://carvel.dev/&quot;&gt;Carvel&lt;/a&gt; tools for packaging and managing addons, which stores the configuration in a Kubernetes secret. The available parameters are:&lt;/p&gt;
&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;arguments&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;ignoreDaemonsetsUtilization&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean important&quot;&gt;true&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;maxNodeProvisionTime&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 15m
  &lt;span class=&quot;token key atrule&quot;&gt;maxNodesTotal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;metricsPort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8085&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;scaleDownDelayAfterAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10m
  &lt;span class=&quot;token key atrule&quot;&gt;scaleDownDelayAfterDelete&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10s
  &lt;span class=&quot;token key atrule&quot;&gt;scaleDownDelayAfterFailure&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3m
  &lt;span class=&quot;token key atrule&quot;&gt;scaleDownUnneededTime&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10m
&lt;span class=&quot;token key atrule&quot;&gt;clusterConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;clusterName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;CLUSTER_NAME&quot;&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;clusterNamespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;VSPHERE_NAMESPACE&quot;&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;paused&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean important&quot;&gt;false&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notably the scan-interval is missing from the arguments list, but can still be specified using an undocumented &lt;code&gt;extraArguments&lt;/code&gt; section like so:&lt;/p&gt;
&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;arguments&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;ignoreDaemonsetsUtilization&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean important&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;maxNodeProvisionTime&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 15m&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;maxNodesTotal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;metricsPort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8085&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;scaleDownDelayAfterAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10m&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;scaleDownDelayAfterDelete&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10s&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;scaleDownDelayAfterFailure&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3m&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;scaleDownUnneededTime&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10m&lt;/span&gt;
&lt;mark class=&quot;highlight-line highlight-line-active&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;extraArguments&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;/mark&gt;
&lt;mark class=&quot;highlight-line highlight-line-active&quot;&gt;  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; scan&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;interval=60s&lt;/mark&gt;
&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;clusterConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;clusterName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;CLUSTER_NAME&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;clusterNamespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;VSPHERE_NAMESPACE&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;paused&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean important&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Time to try this out and verify the result.&lt;/p&gt;
&lt;h2&gt;Verification&lt;/h2&gt;
&lt;p&gt;I am using VCF Automation to get a cluster up and running quickly with autoscaling already enabled. This particular cluster is running vSphere Kubernetes Release (VKr) version 1.35.5, with a single control plane and autoscaler number of nodes set to 0-3.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://runtimezero.eu/assets/images/posts/02-autoscaler-scan-interval-for-vks/k8s-cluster.png&quot; alt=&quot;VKS cluster with automatic autoscaling enabled&quot;&gt;&lt;/p&gt;
&lt;p&gt;Logging into the cluster and checking the default behaviour, we can confirm that the default interval is indeed 10s. This can be seen in the timing of the log messages and also the message itself:&lt;/p&gt;
&lt;pre class=&quot;language-shellsession&quot;&gt;&lt;code class=&quot;language-shellsession&quot;&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;KUBECONFIG&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;Downloads/kubernetes-cluster-746q-kubeconfig.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl logs cluster-autoscaler-7cb8bb799c-8ctfv &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; kube-system &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; triggered&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;I0730 14:26:07.622322       1 trigger.go:98] Autoscaler loop triggered by a 10s timer
I0730 14:26:19.638775       1 trigger.go:98] Autoscaler loop triggered by a 10s timer
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In order to change this we can apply the configuration from before, which overrides the existing secret containing the current configuration. For reference the complete definition looks like this:&lt;/p&gt;
&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# file: autoscaler-values.yaml&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;apiVersion&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; v1
&lt;span class=&quot;token key atrule&quot;&gt;kind&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Secret
&lt;span class=&quot;token key atrule&quot;&gt;metadata&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; kubernetes&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;cluster&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;746q&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;cluster&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;autoscaler&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;values
  &lt;span class=&quot;token key atrule&quot;&gt;namespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; vmware&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;system&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;tkg
&lt;span class=&quot;token key atrule&quot;&gt;stringData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;values.yaml&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token scalar string&quot;&gt;
    ---
    vksAddonManagement: true
    priorityClassName: &quot;&quot;
    clusterConfig:
      clusterName: &quot;kubernetes-cluster-746q&quot;
      clusterNamespace: &quot;development-east-a-nlg6r&quot;
    arguments:
      metricsPort: 8085
      maxNodesTotal: 0
      scaleDownDelayAfterAdd: &quot;10m&quot;
      scaleDownDelayAfterDelete: &quot;10s&quot;
      scaleDownDelayAfterFailure: &quot;3m&quot;
      scaleDownUnneededTime: &quot;10m&quot;
      maxNodeProvisionTime: &quot;15m&quot;
      ignoreDaemonsetsUtilization: true
      startupTaint: &quot;node.cluster.x-k8s.io/uninitialized&quot;
      extraArguments:
      - scan-interval=60s
    paused: false
    resources:
      requests:
        cpu: &quot;25m&quot;
        memory: &quot;50Mi&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-shellsession&quot;&gt;&lt;code class=&quot;language-shellsession&quot;&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl apply &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; autoscaler-values.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;secret/kubernetes-cluster-746q-cluster-autoscaler-values configured
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get pods &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; kube-system &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; auto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;cluster-autoscaler-76f9ff5574-vssmc                           1/1     Running   0               31s
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl logs cluster-autoscaler-76f9ff5574-vssmc &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; kube-system &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; triggered&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;I0730 14:56:00.215137       1 trigger.go:98] Autoscaler loop triggered by a 1m0s timer
I0730 14:57:02.246144       1 trigger.go:98] Autoscaler loop triggered by a 1m0s timer
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And indeed the change got picked up! This confirms that the scan-interval parameter can be set via the extraArguments field.&lt;/p&gt;
&lt;h2&gt;Choosing a value&lt;/h2&gt;
&lt;p&gt;I used 60s here because a longer interval is easy to confirm in the logs, not because it&#39;s a recommendation. The parameter works in both directions: a shorter interval makes Cluster Autoscaler re-evaluate more often — faster reaction to pending pods, at the cost of more API calls and CPU on the autoscaler pod. If your goal is quicker scale-up, go below the 10s default, not above it. Keep in mind &lt;code&gt;scan-interval&lt;/code&gt; is only one factor in how fast a node actually arrives — maxNodeProvisionTime and the underlying VM provisioning time usually dominate. VCF 9.1 has you covered though, because of the new &amp;quot;Fast Deploy&amp;quot; capability - dropping provisioning time significantly.&lt;/p&gt;
&lt;h2&gt;Caveats&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;extraArguments&lt;/code&gt; is undocumented at this time. It works, but it isn&#39;t in the VCF documentation.&lt;/li&gt;
&lt;li&gt;Applying the change restarts the autoscaler, as the deployment needs to get reconciled after the secret has been changed. That means scaling will not be available for a short period of time.&lt;/li&gt;
&lt;li&gt;If the addon is managed by VKS, which upgrades Cluster Autoscaler along with the cluster, read the update section on where to properly adjust the addon values so an upgrade does not reset things.&lt;/li&gt;
&lt;li&gt;There are two more ways to install addons in VKS. Either through plain &lt;code&gt;kubectl&lt;/code&gt; or &lt;code&gt;vcf&lt;/code&gt; CLI addon management. If you use one of the two, then applying the &lt;code&gt;extraArguments&lt;/code&gt; section either survives the upgrade or gets reapplied as part of the upgrade workflow. This is well documented in the respective upgrade sections here: &lt;a href=&quot;https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vcf-consumption/latest/managing-vsphere-kuberenetes-service-clusters-and-workloads/autoscaling-tkg-service-clusters.html&quot;&gt;VMware Cloud Foundation Consumption&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Update: Testing upgrade workflows&lt;/h2&gt;
&lt;p&gt;When using the automatic installation for Cluster Autoscaler the configuration source for the addon lives outside the cluster in the vSphere Namespace where the cluster is instantiated. It is captured in an &lt;code&gt;AddonConfig&lt;/code&gt; that gets created before the cluster is installed and follows a deterministic naming scheme: &lt;code&gt;&amp;lt;CLUSTER-NAME&amp;gt;-cluster-autoscaler&lt;/code&gt;. So let&#39;s try the upgrade from the beginning:&lt;/p&gt;
&lt;p&gt;First a fresh cluster is needed - again using version 1.35.5 and VCF Automation to provide it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://runtimezero.eu/assets/images/posts/02-autoscaler-scan-interval-for-vks/k8s-new-cluster.png&quot; alt=&quot;New VKS cluster for upgrade testing&quot;&gt;&lt;/p&gt;
&lt;p&gt;Find the &lt;code&gt;AddonConfig&lt;/code&gt; after logging into the vSphere Namespace:&lt;/p&gt;
&lt;pre class=&quot;language-shellsession&quot;&gt;&lt;code class=&quot;language-shellsession&quot;&gt;&lt;span class=&quot;highlight-line&quot;&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;vcf context use&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;? Select a context sv:development-east-a-nlg6r
&lt;span class=&quot;highlight-line&quot;&gt;[ok] Token is still active. Skipped the token refresh for context &quot;sv:development-east-a-nlg6r&quot;&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;[i] Successfully activated context &#39;sv:development-east-a-nlg6r&#39; (Type: kubernetes) &lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;[i] Fetching recommended plugins for active context &#39;sv:development-east-a-nlg6r&#39;...&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get AddonConfig &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; autoscaler &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;NAME                                            ADDONCONFIGDEFINITION                                                   CLUSTER                   READY   AGE
&lt;mark class=&quot;highlight-line highlight-line-active&quot;&gt;kubernetes-cluster-2qh5-cluster-autoscaler      cluster-autoscaler.vks.vmware.com.1.35.0---vmware.3-vks.1               kubernetes-cluster-2qh5   True    103s&lt;/mark&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Adding the &lt;code&gt;extraArguments&lt;/code&gt; section to the &lt;code&gt;AddonConfig&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-shellsession&quot;&gt;&lt;code class=&quot;language-shellsession&quot;&gt;&lt;mark class=&quot;highlight-line highlight-line-active&quot;&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl edit  addonconfig kubernetes-cluster-2qh5-cluster-autoscaler&lt;/span&gt;&lt;/span&gt;&lt;/mark&gt;
&lt;span class=&quot;token output&quot;&gt;addonconfig.addons.kubernetes.vmware.com/kubernetes-cluster-2qh5-cluster-autoscaler edited
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get  addonconfig kubernetes-cluster-2qh5-cluster-autoscaler &lt;span class=&quot;token parameter variable&quot;&gt;-o&lt;/span&gt; yaml &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-B&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt; scan&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;spec:
&lt;span class=&quot;highlight-line&quot;&gt;  addonConfigDefinitionRef:&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    name: cluster-autoscaler.vks.vmware.com.1.35.0---vmware.3-vks.1&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    namespace: vmware-system-vks-public&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  clusterName: kubernetes-cluster-2qh5&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;  values:&lt;/span&gt;
&lt;span class=&quot;highlight-line&quot;&gt;    arguments:&lt;/span&gt;
&lt;mark class=&quot;highlight-line highlight-line-active&quot;&gt;      extraArguments:&lt;/mark&gt;
&lt;mark class=&quot;highlight-line highlight-line-active&quot;&gt;      - scan-interval=60s&lt;/mark&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And checking the change is live in the cluster:&lt;/p&gt;
&lt;pre class=&quot;language-shellsession&quot;&gt;&lt;code class=&quot;language-shellsession&quot;&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;KUBECONFIG&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;Downloads/kubernetes-cluster-2qh5-kubeconfig.yaml &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get nodes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;NAME                                                              STATUS   ROLES           AGE     VERSION
kubernetes-cluster-2qh5-bsgqs-bxwnq                               Ready    control-plane   5m12s   v1.35.5+vmware.1
kubernetes-cluster-2qh5-kubernetes-cluster-2qh5-np-hxss-trrxtvj   Ready    &amp;lt;none&gt;          3m18s   v1.35.5+vmware.1
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get pods &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; kube-system &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; scale&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;cluster-autoscaler-6c78d798cf-5bls6                           1/1     Running   0          69s
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl logs cluster-autoscaler-6c78d798cf-5bls6 &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; kube-system &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; timer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;I0806 07:56:34.223878       1 trigger.go:98] Autoscaler loop triggered by a 1m0s timer
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nice - &lt;code&gt;scan-interval&lt;/code&gt; got changed to our desired 60s value. Now the cluster is upgraded to version 1.36.1 - again via the comfort of VCF Automation, where this is a one-click operation:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://runtimezero.eu/assets/images/posts/02-autoscaler-scan-interval-for-vks/k8s-upgrade-cluster.png&quot; alt=&quot;Upgrading the new VKS cluster&quot;&gt;&lt;/p&gt;
&lt;p&gt;Confirm Cluster Autoscaler got upgraded along with the VKr:&lt;/p&gt;
&lt;pre class=&quot;language-shellsession&quot;&gt;&lt;code class=&quot;language-shellsession&quot;&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get AddonConfig&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;NAME                                            ADDONCONFIGDEFINITION                                                   CLUSTER                   READY   AGE
kubernetes-cluster-2qh5-cluster-autoscaler      cluster-autoscaler.vks.vmware.com.1.36.0---vmware.1-vks.1               kubernetes-cluster-2qh5   True    
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get  addonconfig kubernetes-cluster-2qh5-cluster-autoscaler &lt;span class=&quot;token parameter variable&quot;&gt;-o&lt;/span&gt; yaml &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-B&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt; scan&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;spec:
  addonConfigDefinitionRef:
    name: cluster-autoscaler.vks.vmware.com.1.36.0---vmware.1-vks.1
    namespace: vmware-system-vks-public
  clusterName: kubernetes-cluster-2qh5
  values:
    arguments:
      extraArguments:
      - scan-interval=60s
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;AddonConfig&lt;/code&gt; got updated to reflect the new version - the &lt;code&gt;extraArguments&lt;/code&gt; section is still in place. Now also confirm in the cluster itself:&lt;/p&gt;
&lt;pre class=&quot;language-shellsession&quot;&gt;&lt;code class=&quot;language-shellsession&quot;&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;KUBECONFIG&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;Downloads/kubernetes-cluster-2qh5-kubeconfig.yaml &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get nodes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;NAME                                                              STATUS   ROLES           AGE     VERSION
kubernetes-cluster-2qh5-bsgqs-cnlz9                               Ready    control-plane   5m53s   v1.36.1+vmware.4
kubernetes-cluster-2qh5-kubernetes-cluster-2qh5-np-hxss-trgmnkg   Ready    &amp;lt;none&gt;          2m5s    v1.36.1+vmware.4
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get pkgi &lt;span class=&quot;token parameter variable&quot;&gt;-A&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; scale&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;NAMESPACE            NAME                                                 PACKAGE NAME                                  PACKAGE VERSION                 DESCRIPTION                                                            AGE   PAUSED
vmware-system-tkg    kubernetes-cluster-2qh5-cluster-autoscaler           cluster-autoscaler.kubernetes.vmware.com      1.36.0+vmware.1-vks.1           Reconcile succeeded                                                    15m   
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl get pods &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; kube-system &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; scale&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;cluster-autoscaler-775dc8747c-4d882                           1/1     Running   0          6m54s
&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token shell-symbol important&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;token bash language-bash&quot;&gt;kubectl logs cluster-autoscaler-775dc8747c-4d882 &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; kube-system &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; timer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token output&quot;&gt;I0806 08:06:04.780859       1 trigger.go:98] Autoscaler loop triggered by a 1m0s timer
I0806 08:07:06.814368       1 trigger.go:98] Autoscaler loop triggered by a 1m0s timer
I0806 08:08:08.432838       1 trigger.go:98] Autoscaler loop triggered by a 1m0s timer
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The cluster got upgraded correctly, Cluster Autoscaler version got bumbed to match the Kubernetes version and the custom configuration is still in place.&lt;/p&gt;
</content>
    <category term="VKS"/>
    <category term="Kubernetes"/>
  </entry>
  <entry>
    <title>In the Making</title>
    <link href="https://runtimezero.eu/posts/welcome-to-runtime-zero/"/>
    <id>https://runtimezero.eu/posts/welcome-to-runtime-zero/</id>
    <published>2026-07-01T00:00:00.000Z</published>
    <updated>2026-07-01T00:00:00.000Z</updated>
    <summary>Runtimezero will soon be up and running with it&#39;s true first post.</summary>
    <content type="html">&lt;h2&gt;Welcome to Runtime Zero&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Runtime Zero&lt;/strong&gt; is a technical blog with field notes on VMware technology, Kubernetes, industry trends and other things - written for the people who run this stuff and sometimes for the ones in charge of the budget.&lt;/p&gt;
&lt;p&gt;Opinions are my own.&lt;/p&gt;
&lt;p&gt;It is a clean and highly opinionated space. I highly value privacy, so this site runs without trackers, popups, CDNs or ads.&lt;/p&gt;
&lt;h2&gt;The Site Manifesto&lt;/h2&gt;
&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# file: manifesto.yaml&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;site&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;runtimezero.eu&quot;&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Active &amp;amp; Under Construction&quot;&lt;/span&gt;

&lt;span class=&quot;token key atrule&quot;&gt;maintainer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Christian Schausberger&quot;&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;current_title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Solutions Architect at Broadcom&quot;&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;experience&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;20+ years&quot;&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;opinions&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;unfiltered, my own&quot;&lt;/span&gt;

&lt;span class=&quot;token key atrule&quot;&gt;architecture&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;stack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Eleventy&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Markdown&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Clarity&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;bloat_index&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0.0%&quot;&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;trackers_installed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;annoying_popups&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;newsletter_walls&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;cookies_set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1 (light or dark mode preference)&quot;&lt;/span&gt;

&lt;span class=&quot;token key atrule&quot;&gt;intended_audience&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Everyone who wants to understand how (but is too lazy to read the docs)&quot;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Everyone who wants to understand why (but is too lazy to read the docs)&quot;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;The brave souls managing the infrastructure budget&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
    <category term="Everything Else"/>
  </entry>
</feed>
