Incident Library

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

AKS 클러스터의 Azure 서비스 주체 자격 증명이 만료돼 파드가 볼륨을 마운트하지 못함

Jenkins 인프라의 AKS 노드는 Azure 서비스 주체 자격 증명으로 Azure API 에 인증한다. 노드는 이 인증으로 Azure Blob 이나 CIFS 같은 파일 시스템 볼륨을 마운트하고, 사설 네트워크에 접근하고, Azure 로드 밸런서를 만들고 지운다. 이 자격 증명이 2021년 6월 2일 17:53 UTC 에 만료됐고, 9분 뒤인 18:02 UTC 부터 파드가 볼륨을 마운트하지 못하고 새 노드가 CNI 에서 네트워크 가상 인터페이스를 받지 못했다. 영구 볼륨을 쓰는 파드가 스케줄되지 못해 trusted.ci.jenkins.io, infra.ci.jenkins.io, release.ci.jenkins.io 의 빌드가 실패했고, LTS 2.289.1 릴리스 과정도 영향을 받았다.

6월 3일 15:15 UTC 에 인프라 팀이 서비스 주체 자격 증명을 갱신했다. 한 엔지니어에게는 Azure 에서 서비스 주체를 재설정할 권한이 모두 있지는 않아, 권한이 있는 다른 팀원이 재설정했다. 서비스 주체를 재설정하면 노드를 전부 재시작해야 한다. AKS 는 표준 절차인 cordon, drain, 업데이트, 재부팅 순서로 재시작을 자동으로 진행했고, 이 작업은 중간에 멈출 수 없었다. 재시작 동안 ldap.jenkins.io 가 2분 동안 내려갔고 plugins.jenkins.io 는 요청의 33% 에 HTTP/500 을 냈다. 16:35 UTC 에 모든 작업이 끝났고, 쿠버네티스 위의 애플리케이션이 모두 다시 시작됐으며 로그와 지표에서 오류가 더 보이지 않았다.

심각도
–
영향 범위
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
영향 사용자
–
지역
–
감지까지
–
복구까지
22h 42m

증상

2021년 6월 2일 18:02 UTC 부터 Jenkins 인프라의 AKS 클러스터에서 파드가 볼륨을 마운트하지 못한다는 오류와, 스케일 업으로 늘어난 노드가 CNI 에서 네트워크 가상 인터페이스를 받지 못한다는 오류가 나타나기 시작했다.

영구 볼륨이 붙은 파드는 스케줄되지 못했다. trusted.ci.jenkins.io, infra.ci.jenkins.io, release.ci.jenkins.io 에서 PVC 를 쓰는 파드로 도는 빌드가 6월 3일 15:30 UTC 까지 실패했고, LTS 2.289.1 릴리스 과정도 이 문제에 걸렸다.

자격 증명을 갱신하자 AKS 가 모든 노드를 재시작했고, 그동안 다른 서비스도 흔들렸다. ldap.jenkins.io 는 6월 3일 15:17 UTC 부터 15:19 UTC 까지 내려가 있었고, plugins.jenkins.io 는 15:15 UTC 부터 16:35 UTC 까지 요청의 33% 에 HTTP/500 을 냈다.

증상 자격 증명 획득 실패파드 ContainerCreating 정체

원인

촉발
2021년 6월 2일 17:53 UTC 에 AKS 노드가 Azure API 인증에 쓰는 Azure 서비스 주체 자격 증명이 만료됐다.

감지

LTS 2.289.1 릴리스 문제의 근본 원인을 조사하던 엔지니어가 AKS 콘솔 화면에서 오류를 확인했다.

조치

후속 조치

교훈

–

출처

참고 문서

관련 사례

내 클러스터에도 있는지 확인하기

kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이 사례와 같은 상태를 점검합니다. 이 사례의 구성 요소: 클러스터의 클라우드 자격 증명, 영구 볼륨과 스테이트풀셋, CNI 플러그인. 점검 항목의 근거는 이 사례 같은 공개 보고서입니다.

AI 도구와 스크립트용

API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.