Incident Library

IL-0521 Jenkins project · 2021-06-02kubernetesazure

AKS pods could not mount volumes and new nodes got no CNI network interface after the cluster service principal expired

AKS nodes use the cluster's Azure Service Principal credential to authenticate to the Azure API, which gives them the rights to mount file system volumes such as Azure Blob or CIFS, to use private network access and to create and delete Azure load balancers. The Jenkins infrastructure cluster's credential expired at 17:53 UTC on 2 June 2021. From 18:02 UTC pods could not mount volumes and scaled-up nodes could not get a network virtual interface from the CNI, so pods with persistent volumes could not be scheduled and builds using them failed on trusted.ci.jenkins.io, infra.ci.jenkins.io and release.ci.jenkins.io, including the LTS release process.

The error was found in the AKS UI console during the investigation of the LTS 2.289.1 release problem. At 15:15 UTC on 3 June the infrastructure team renewed the service principal credential. Resetting it requires a full restart of the nodes, which AKS carried out automatically with the standard cordon, drain, update and reboot process, and the operation could not be stopped. The restart made ldap.jenkins.io unavailable for two minutes and plugins.jenkins.io answer HTTP/500 on 33% of requests. By 16:35 UTC every operation had finished, all Kubernetes-hosted applications had restarted and no more errors showed in logs or metrics. One engineer did not have the full Azure authorisation needed to reset the service principal, so another team member did the reset.

Severity
–
Scope
Pods with persistent volumes could not be scheduled from 18:02 UTC on 2 June to 15:30 UTC on 3 June, failing builds on trusted.ci.jenkins.io, infra.ci.jenkins.io and release.ci.jenkins.io; during the node restarts ldap.jenkins.io was down for two minutes and plugins.jenkins.io returned HTTP/500 on 33% of requests
Users affected
–
Region
–
Time to detect
–
Time to resolve
22h 42m

Symptoms

From 18:02 UTC on 2 June 2021, the Jenkins infrastructure AKS cluster logged errors about pods that were unable to mount volumes and about scaled-up nodes that were unable to obtain a network virtual interface from the CNI.

Pods with a Persistent Volume could not be scheduled, so builds that used a pod with a PVC failed on trusted.ci.jenkins.io, infra.ci.jenkins.io and release.ci.jenkins.io. The errors also hit the LTS release process for 2.289.1, and the cause was found in the AKS UI console while the team investigated that release problem: the cluster's Azure Service Principal credential had expired at 17:53 UTC.

Renewing the credential at 15:15 UTC on 3 June started an automatic operation on the AKS cluster that could not be stopped and restarted all nodes. During the restart ldap.jenkins.io was unavailable from 15:17 to 15:19 UTC, and plugins.jenkins.io answered HTTP/500 on 33% of requests until 16:35 UTC.

Symptom Credentials unavailablePods stuck in ContainerCreating

Root cause

Trigger
The Azure Service Principal credential of the AKS cluster expired at 17:53 UTC on 2 June 2021.

Detection

The error behind the failures was found in the AKS UI console while the team investigated the root cause of the LTS 2.289.1 release problem.

Remediation

Action items

Lessons

–

Sources

References

Related cases

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, Cluster cloud identity, Persistent volumes and stateful sets, CNI plugin among them, read-only, from Claude Code or Codex. Its checks cite public reports like this one.

For AI tools and scripts

The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.