Cases2 cases
1 to 2 of 2
IL-0147AKS nodes behind an HTTP proxy failed to provision with CSE exit code 31 on 202508 node images, because a refactoring stopped the proxy from being used when downloading uncached Kubernetes binariesMicrosoft2025- Symptoms
Creating or scaling a node pool on AKS 1.31.8 failed: the VMSS instances never finished provisioning. This started after planned maintenance moved the node image from 202507.* to 202508.*, in a cluster where nodes must send all outbound traffic through an internal HTTP/HTTPS proxy and direct egress is blocked. It happened with both Ubuntu and AzureLinux images.
- Trigger
A node image auto-upgrade from 202507.* to 202508.* during planned maintenance, on clusters whose Kubernetes patch version was not pre-cached in the new image.
- Root cause
- Component
- Contributing factor
- Detection
The customer saw VMSS instance provisioning fail with a vmssCSE error in the VMSS activity logs and reported it as a GitHub issue.
- Remediation
- The customer pinned the node image to a 202507.* snapshot on clusters running 1.31.8
- The customer upgraded clusters to AKS 1.31.9 or 1.31.10, whose binaries are cached in the 202508.* images
- The AKS team hot-patched VHD 20250811 so the proxy configuration is used for uncached binary downloads and made it globally available in public regions on 2025-09-04; it also announced the hotfix for VHD 20250820
- The AKS team told users to reimage their nodes with az aks nodepool upgrade --node-image-only to pick up the hotfixed image
- Action items
- Apply the proxy fix in all future VHDs
- Lessons
A bootstrap path that runs only when an artefact is missing from a cache is easy to break without noticing: here only clusters on Kubernetes versions not pre-cached in the node image ever downloaded binaries, so only they met the proxy regression. Testing node provisioning behind a mandatory egress proxy, on older patch versions as well as the newest, would exercise that path. For clusters with restricted egress, pinning the node image or moving to a Kubernetes version cached in the image were both quick workarounds while the fix was shipped.
IL-0039New Kubernetes worker nodes could not join any cluster because a package URL hardcoded in kops nodeup brokeFREE NOW2019- Symptoms
At 16:00 CEST a developer reported in the #ask-platform Slack channel that a deployment to the Prelive cluster was failing, and a second report followed at 16:06.
- Trigger
Roughly two to three days earlier, the CentOS repository mirror was restructured and container-selinux-2.68-1.el7.noarch.rpm moved, which made the static download URL hardcoded in kops nodeup invalid.
- Root cause
- Component
- Contributing factor
- Detection
Developers asked for help in the #ask-platform Slack channel because their deployments were failing.
- Remediation
- downloaded the package by hand on the Prelive nodes so their bootstrap could finish
- changed the cluster AMI from Amazon Linux 2 to Debian and applied it to all clusters
- Action items
- Create an alert that shows when nodes cannot join the cluster, possibly from information the cluster autoscaler already has
- Document the external dependencies of node startup and look for ways to reduce them
- Change the AMI back to Amazon Linux 2 Minimal once kops fixes the issue
- Document node troubleshooting better: what happens during bootstrap and where the logs are
- Lessons
Applying cluster changes through kops and Jenkins worked well, and troubleshooting quickly showed that the failing deployments came from missing cluster capacity. What went wrong was that nobody noticed, over a long period, that some autoscaling groups held more worker instances than Kubernetes had nodes. The team was lucky that no large number of production spot instances was terminated during the problem and that it was noticed during office hours.
These 2 cases involve Node operating system image and Node pool. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause2
Software defect1 case
- Component
- Contributing factor
- Organisation
Dependency failure1 case
- Component
- Contributing factor
- Organisation