일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 오블완
- apollo router
- m4 pro
- 배포 프로세스
- http 413
- Logrus
- 사설 ip
- 디자인패턴
- AWS
- go
- 대규모 시스템 설계
- Intellij
- golang
- GoF
- Infra
- 배포 파이프라인
- UnBuffered channel
- Kubernetes
- System Design
- goland
- Buffered channel
- kube-prometheus-stack
- 티스토리챌린지
- gitops
- elasticsearch
- 윈도우키보드
- 컴포지트패턴
- notification system
- intellij ide
- body size
Archives
- Today
- Total
Fall in IT.
쿠버네티스 패키지(kube-prometheus-stack) 관리 이슈 본문
반응형
이슈
기존의 쿠버네티스에 설치된 kube-prometheus-stack의 대시보드를 설정하던 도중 elasticsearch 정보를 받아오기위해서 elasticsearch exporter를 설치했다.
그리고 prometheus에서 데이터를 scrape 하기 위해서 설정을 변경하고 helm 패키지 매니저를 통해서 kubernetes 환경에 upgrade를 실행했다.
그랬더니….
kube-prometheus-stack의 grafana 디플로이먼트가 실행되지 못하는 문제가 발생했다.
쿠버네티스 클러스터에 노드들의 자원도 충분했음에도 불구하고 파드의 생성이 반복적으로 실패해서 자세히 확인해보게 되었다.
이슈 원인
- Helm Chart 버전 간 Breaking Changes
- kube-prometheus-stack의 버전이 54.0.1에서 66.3.0으로 업그레이드됨에 따라 values.yaml 구조 및 기본 설정이 변경되었다.
- 변경된 values.yaml 구조를 이전 설정과 호환하지 못해 Grafana가 제대로 프로비저닝되지 않고 localhost:3000 연결 실패 에러가 발생했다.
- 특히, Grafana의 프로비저닝 디렉터리 경로, ConfigMap/Secret의 변경 또는 Helm Chart 내부 스크립트의 변경으로 인해 충돌이 발생했을 가능성이 크다.
- 충분한 검증 없이 업그레이드 실행
- Helm Chart 업그레이드 전에 새로운 버전의 values.yaml 구조를 확인하지 않고 기존 설정을 그대로 사용하여 문제가 발생했다.
원인은 어떻게 찾았나요?
1. helm 명령어를 사용해서 쿠버네티스 클러스터에 설치된 패키지를 확인했다.
$ helm list -n [namespace]
2. 업그레이드를 진행한 서비스의 revision 확인
$ helm history [service name] -n [namepsace]
# 결과 REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sat Apr 6 06:02:22 2024 superseded kube-prometheus-stack-54.0.1 v0.69.1 Install complete
2 Tue Dec 3 15:40:49 2024 superseded kube-prometheus-stack-66.3.0 v0.78.2 Upgrade complete
3 Tue Dec 3 16:01:58 2024 superseded kube-prometheus-stack-66.3.0 v0.78.2 Upgrade complete
4 Wed Dec 4 11:56:17 2024 superseded kube-prometheus-stack-66.3.0 v0.78.2 Upgrade complete
3. kube-prometheus-stack 버전이 크게 변경된 것을 확인하고 둘의 values.yaml 구조를 비교해보았다.
$ helm show values prometheus-community/kube-prometheus-stack --version 54.0.1 > values-54.0.1.yaml
$ helm show values prometheus-community/kube-prometheus-stack --version 66.3.0 > values-66.3.0.yaml
# 변경사항 확인
$ diff values-54.0.1.yaml values-66.3.0.yaml
4. 이전 버전과 동일한 버전으로 다시 upgrade를 진행했다.
해결방법
위에서 말한것처럼 당장 서비스는 동작해야해서 설정을 즉시 적용시키위해 버전을 낮춰서 설정을 적용시켰다.
하지만, 이는 현재 문제를 해결하는 과정이었고 helm이란 도구를 사용해서 서비스를 쿠버네티스에 설치하고 운영하는 방법에 대한 문제는 여전히 남아있는 상태이다.
Helm Chart 및 values.yaml 파일의 관리 정책, 업그레이드 절차, 문제 해결 방법을 문서화해야겠다.
반응형
'시스템구축' 카테고리의 다른 글
DDNS란 무엇인가? (0) | 2024.11.22 |
---|---|
로그 데이터를 수집하는 방법에 대해서 (0) | 2024.11.17 |
Elasticsearch 로그 저장소 문제 해결 사례 (2) | 2024.11.15 |
간단한 알림 시스템 설계 (0) | 2024.01.13 |
System Design을 위한 기본 기능 정리 (2) | 2023.12.31 |
Comments