← 목록으로 돌아가기

1.29 버전 마운트 경합 오류와 서비스 신뢰도, 반포 마사지 가격 비교에서 배운 것

쿠버네티스 대시보드에서 발생하는 CSI 드라이버 에러 로그를 확인하는 기술자의 모습

쿠버네티스 1.29 에서 특정 CSI 드라이버가 초기화 시점에 마운트 경합을 일으킨다. 이는 단순히 디스크가 마운트되지 않는 것을 넘어, 데이터베이스 연결 풀의 급격한 소모로 이어지는 연쇄 반응이 발생한다. 나는 이 문제를 발견한 첫 순간에 로그를 훑으며 '경합'이라는 단어를 보았지만, 그 뒤에 숨겨진 리소스 대기열의 깊이를 정확히 계산하지는 못했다.

## 관찰 시각: 시간대별 상태 전이
오류가 발생한 시점은 시스템 부하가 낮던 평일 오후였다. 보통 경합은 트래픽 피크 때 나타나기 마련인데, 이때 발생한다는 게 이상했다. `kubectl get events -n namespace` 를 확인했을 때, `NodeAffinity` 와 `VolumeBindingTimeout` 메시지가 교차하면서 나타났다. 드라이버가 노드의 상태 변화를 감지하는 주기보다 마운트 요청이 먼저 도착한 경우다.

## 단서: 실패 패턴의 수치화
구체적으로 어떤 단계에서 지연이 발생했는지 확인하기 위해 리トライ 횟수를 관찰했다. 정상적인 경우는 1 회 이내로 성공하지만, 이 버그는 평균 3 회에서 5 회 사이의 재시도가 필요했다. 이는 단순한 네트워크 지연보다 커널 스케줄링 레벨에서의 대기열 병목이 원인임을 시사한다. PostgreSQL 실행계획의 회귀 현상과 마찬가지로, 인프라 계층의 미세한 변동성이 상위에 큰 손실로 전가된다.

## 판단: 신뢰도 계산의 중요성
이런 상황을 생각하면, 단순히 가장 저렴한 비용을 선택하는 것보다 안정성을 우선시해야 한다. 반포 마사지 가격 비교와 유사하게, 헤드라인 숫자만 보고 서비스를 선택하듯 쿠버네티스 배포 시에도 버전 변경 로그를 무시하지 않아야 했다. 저가형 인스턴스에서 이런 경합 오류가 발생하면 실제 운영 비용은 오동작으로 인한 손실로 더 커진다.

## 후속 확인: 조건별 테스트 절차
문제를 재현하기 위해 드라이버의 초기화 플래그 `--node-idle-timeout` 값을 조정해 보았다. 이 설정을 30 초에서 60 초 사이로 늘리면, 노드가 준비를 마칠 때까지 대기 시간이 확보되어 경합이 줄어든다. 하지만 이는 전체적인 스펙에 대한 오버헤드 발생을 의미한다.

처음에 느낀 '잘 모르겠다'는 감정이 풀리는 순간은 아니지만, 최소한 로그의 흐름과 대화가 명확해졌다. 1.29 버전에서 발생하는 이 마운트 경합은 단순히 버그 수정만으로 해결되는 문제가 아니라, 아키텍처 설계 시 리소스 할당 정책까지 고려해야 하는 교훈을 남겼다. 결국 가장 중요한 건 신뢰도이고, 그건 가격표 뒤에 숨겨져 있다.

함께 보면 좋은 정보