반응형
최근에 ETCD에 대한 상태 모니터링을 하기 위해서 metrics수집을 활성화했는데 바로 etcdDatabaseHighFragmentationRatio 라는 알람이 발생하여 확인을 진행함.
etcdDatabaseHighFragmentationRatio?
먼저, etcdDatabaseHighFragmentationRatio 라는 알람이 왜발생하는지 알았어야하는데. 얼핏 해석해보자면, ETCD에는 클러스터의 상태 저장을 위해 key=value형식으로 저장이 되는데 이전 상태 값에 대해서도 계속 남겨두기때문에(revision) 실제로 클러스터에서 사용하는 데이터 양은 얼마 되지않고 ETCD에 쌓이는 데이터가 과도하게 많아질 경우 알람이 발생한다고함. (틀리면 코멘트 부탁드립니다)
- 즉, DB에 있는 데이터를 효율적으로 사용하고 있지않아서 발생한 알람
해결 방법
사내에서는 Prometheus-Stack에서 제공되는 기본 Rule을 사용하여 클러스터를 모니터링하고있는데 친절하게도 대응 방법을 알려준다.
etcd cluster "kube-etcd": database size in use on instance 0.0.0.0:2381 is 30.37% of the actual allocated disk space, please run defragmentation (e.g. etcdctl defrag) to retrieve the unused fragmented disk space.
말그대로 etcdctl defrag라는 명령어를 사용하면 데이터 조각모음(?)이 되어 문제를 해결할수있다.
해당 명령어는 control-plane에 들어가서 한번씩 실행해줘야한다.
# 혹시 모르니 etcd backup
etcdctl snapshot save snapshot.db \
--cert /etc/ssl/etcd/ssl/node-master-1.pem \
--key /etc/ssl/etcd/ssl/node-master-1-key.pem \
--endpoints=https://127.0.0.1:2379
# etcd status확인
etcdctl --endpoints=https://127.0.0.1:2379 \
--cert /etc/ssl/etcd/ssl/node-master-1.pem \
--key /etc/ssl/etcd/ssl/node-master-1-key.pem \
endpoint status --write-out=json
# 여기서 출력되는 dbSize와 dbSizeInUse를 보면 전체대비 얼마나 사용중인지 확인이 가능함
# etcd defrag실행
etcdctl --endpoints=https://127.0.0.1:2379 \
--cert /etc/ssl/etcd/ssl/node-master-1.pem \
--key /etc/ssl/etcd/ssl/node-master-1-key.pem \
defrag
읽어보면 좋은 블로그
https://tech.kakao.com/posts/484
Kubernetes 운영을 위한 etcd 기본 동작 원리의 이해 - tech.kakao.com
안녕하세요, 클라우드플랫폼팀 ted입니다. Container Cloud 관련 업무...
tech.kakao.com
반응형
'Develop > DevOps' 카테고리의 다른 글
[Kubernetes] kubespray etcd metrics 활성화 (1) | 2025.07.11 |
---|---|
[Go] Kubebuilder 사용해보기 - 1 (0) | 2025.06.27 |
[Istio] 공부한거 이것저것 정리 (WIP) (0) | 2025.06.21 |
[Kubernetes] 클러스터 업그레이드 전 호환성 체크 kubent (0) | 2025.06.16 |
[Prometheus] Prometheus HA를 위한 Thanos 배포 (0) | 2025.06.08 |